如何知道C中cpu/os的位计数
我知道如何使用shell获取cpu或操作系统的位计数如何知道C中cpu/os的位计数,c,linux,sizeof,bitcount,C,Linux,Sizeof,Bitcount,我知道如何使用shell获取cpu或操作系统的位计数 cat /proc/cpuinfo | grep lm #-> get bit count of a cpu uname -a #-> get bit count of an operation system 然而,我们怎样才能得到C程序中的位计数呢。 这是一个面试问题,我的答案如下: int *ptr; printf("%d\n", sizeof(ptr)*8); 但是面试官说这是错误的
cat /proc/cpuinfo | grep lm #-> get bit count of a cpu
uname -a #-> get bit count of an operation system
然而,我们怎样才能得到C程序中的位计数呢。
这是一个面试问题,我的答案如下:
int *ptr;
printf("%d\n", sizeof(ptr)*8);
但是面试官说这是错误的。那么,正确的答案是什么呢?在Linux上,一种简单的方法是使用命令并解析输出
另一种方法是查看
uname
命令的源代码(因为它随时可用),并直接基于此实现一些东西。POSIX还提供了一个C函数。您可以获得类似的结果,如shell命令uname
:
#include <stdio.h>
#include <sys/utsname.h>
int main(){
struct utsname buf;
uname(&buf);
printf("sysname: %s\nversion: %s\nmachine: %s\n ", buf.sysname, buf.version, buf.machine);
return 0;
}
虽然指针的大小通常跟随平台的“大小”,但这并不总是正确的。唯一的方法是使用操作系统本机函数查询操作系统。@JoachimPileborg我们可以使用哪些操作系统本机函数?当然取决于操作系统。@JoachimPileborg。。我很抱歉。让我们假设操作系统是Linux。的可能副本
sysname: Linux
version: #1 SMP Tue Oct 2 22:01:37 EDT 2012
machine: i686