我想在Linux环境下运行时检测CPU架构,我查看了getauxval(AT_PLATFORM)
但很遗憾这个方法并不是很通用,因为它相对较新。是否有替代getauxval(AT_PLATFORM)
的方法呢?我可以解析/proc/cpuinfo
,但认为可能有更简单的方法。我正在尝试获取类似于uname -m
的输出。
我想在Linux环境下运行时检测CPU架构,我查看了getauxval(AT_PLATFORM)
但很遗憾这个方法并不是很通用,因为它相对较新。是否有替代getauxval(AT_PLATFORM)
的方法呢?我可以解析/proc/cpuinfo
,但认为可能有更简单的方法。我正在尝试获取类似于uname -m
的输出。
I'm trying to get output similar to uname -m.
为什么不看一下uname
是如何实现的呢?运行apt source coreutils
,然后在src/uname.c
中查看:
...
while ((c = getopt_long (argc, argv, "asnrvmpio",
uname_long_options, NULL)) != -1)
...
case 'm':
toprint |= PRINT_MACHINE;
if (uname (&name) == -1)
...
if (toprint & PRINT_MACHINE)
print_element (name.machine);
(请注意uname
函数的用法)。
uname
是由POSIX定义并在glibc中封装的系统调用:
#include <sys/utsname.h>
int uname(struct utsname *buf);
此外,在lib/uname.c
中,您可以看到coreutils为Windows系统实现自定义的uname
函数(因为Windows不支持uname
系统调用)。该实现使用GetVersionEx
和GetSystemInfo
WinAPIs提供类似的功能。
将机器硬件标识符存储在buf->machine
中,并由uname -m
打印出来。
/proc/cpuinfo
。 - Galik