什么是检测32位用户模式程序是否在64位内核下运行的最佳和最可靠方法(即系统是否处于“长模式”)?如果可能的话,我宁愿不调用外部程序(或加载任何内核模块)。
注意:我想检测是否使用了64位内核(或者说CPU是否处于长模式),而不仅仅是有没有64位处理器(/proc/cpuinfo告诉我这一点,但并不能告诉我64位能力是否被使用)。
如果使用32位编译的uname或者使用setarch i686,则内核会伪装成一个32位处理器。
注意:我想检测是否使用了64位内核(或者说CPU是否处于长模式),而不仅仅是有没有64位处理器(/proc/cpuinfo告诉我这一点,但并不能告诉我64位能力是否被使用)。
如果使用32位编译的uname或者使用setarch i686,则内核会伪装成一个32位处理器。
/proc/vmallocinfo
,看一下地址是32位还是64位。 - Erik/proc/kallsyms
是一个备选项,它是默认的可读取全局文件。 - caf