【发布时间】:2011-08-22 12:52:12
【问题描述】:
检测 32 位用户模式程序是否在 64 位内核上运行(即系统是否处于“长模式”)的最佳和最可靠的方法是什么?如果可能的话,我宁愿不调用外部程序(或者必须加载任何内核模块)。
注意:我想检测是否正在使用 64 位内核(或者实际上,CPU 是否处于长模式),而不仅仅是是否存在支持 64 位的处理器(/proc/cpuinfo 告诉我但是不是是否正在使用 64 位功能)。
如果 uname 编译为 32 位或使用 setarch i686,则内核会伪造 32 位处理器。
【问题讨论】:
-
你可以看看例如
/proc/vmallocinfo看看地址是32位还是64位 -
那只能被root读取,对吧?
-
/proc/kallsyms是默认世界可读的替代方案。