c - 在运行时 linux 确定 cpu 架构?
问题描述
我想在 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);
并将机器硬件标识符存储在 中buf->machine
,这是由 . 打印的内容uname -m
。
顺便说一句-lib/uname.c
您可以看到 coreutilsuname
为 Windows 系统(不支持uname
系统调用)实现的自定义函数。此实现使用提供类似功能的GetVersionEx
和WinAPI。GetSystemInfo
推荐阅读
- spring-boot - 使用 Spring WebFlux 的 Flutter Stream
- ag-grid - ag-grid 主详细信息展开/折叠功能
- amazon-web-services - 生产中的 AWS Lambda event.body 解析错误
- oracle - SQLPlus DBMS 输出与开发人员中的不同
- javascript - 正则表达式从单词创建链接,但如果单词包含三个点则不会
- python - 在列的行中选择有限的值(第 2 部分)
- angular - 如何在 Angular 中使用嵌套 *ngFor
- python - 具体的 Python cumsum
- java - 命令行中的 Java 执行因 JMX 错误而失败
- typescript - 使用 wasm 将模块导入并编译到 webpack 中