调用该uname()函数并检查返回的machine字符串,该字符串将x86_64用于64位Intel平台.
扭转使用效果的一种方法setarch是重置个性:
#include <stdio.h>
#include <sys/utsname.h>
#include <sys/personality.h>
int main()
{
struct utsname u;
personality(PER_LINUX);
uname(&u);
puts(u.machine);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这在32位模式下编译并在64位系统上运行时显示正确的结果:
$ gcc -m32 -o u u.c
$ ./u
x86_64
$ setarch i686 ./u
x86_64
Run Code Online (Sandbox Code Playgroud)
编辑:固定代码以扭转效果setarch.
参考.