2009-09-01 31 views
2

我正在寻求区分Core Solo/Duo和Core 2 Duo处理器的64位支持。检测Mac OS X上的Ruby 64位CPU

在酷睿2,然后`sysctl hw.cpu64bit_capable`给出1,如所期望的,但在32位处理器,它引发错误,说:

second level name cpu64bit_capable in hw.cpu64bit_capable is invalid 

什么是检测一个64位的最佳方式处理器?

谢谢。

回答

4

通过查看命令的返回值,您仍然可以使用您的sysctl命令。

$ irb 
>> system("sysctl hw.cpu64bit_capable > /dev/null 2>&1") 
=> true 

在32位CPU上它应该返回false


或者,这取决于你真正寻找的,你可以测试64位EFI与ioreg,但我认为你的CPU可能仍然有32位EFI 64位。

在64位EFI的机器,你会得到这样的:

$ irb 
>> system("ioreg -l -p IODeviceTree | grep firmware-abi | grep -q EFI64") 
=> true 

在缺乏64位EFI的机器,你会得到false