我怎么知道C中的cpu / os的位数

时间:2013-10-17 05:04:49

标签: 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);

但面试官说错了。那么,正确答案是什么?

2 个答案:

答案 0 :(得分:1)

在Linux上,一种简单的方法是使用popen命令uname -m并解析输出。

另一种方法是查看uname命令的源代码(因为它可以随时使用)并直接实现基于它的内容。

答案 1 :(得分:1)

POSIX也提供C函数uname。您可以获得类似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;
}

我机器上的输出:

sysname: Linux
version: #1 SMP Tue Oct 2 22:01:37 EDT 2012
machine: i686