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



我知道如何使用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("%dn", sizeof(ptr)*8);

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

POSIX也提供了一个C函数uname。您可以获得类似的结果,例如 shell 命令uname

#include <stdio.h>
#include <sys/utsname.h>
int main(){
    struct utsname buf;
    uname(&buf);
    printf("sysname: %snversion: %snmachine: %sn ", buf.sysname, buf.version, buf.machine);
    return 0;
}

我的机器上的输出:

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

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

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

相关内容

  • 没有找到相关文章

最新更新