2011-04-13 165 views
1

我想以编程方式获得在Mac OS X中的CPU的描述,这是这个样子:获取CPU描述

Intel(R) Core(TM)2 CPU 6700 @ 2.66GHz 
Intel(R) Xeon(R) CPU X5550 @ 2.67GHz 

在Linux上,你可以做grep "^model name" /proc/cpuinfo,并在Windows中可以看在注册表中HKLM\Hardware\Description\System\CentralProcessor\0ProcessorNameString值中,但是如何获取OS X上的这些信息?

+0

...使用什么语言? – FrustratedWithFormsDesigner 2011-04-13 14:14:08

+0

不知道它太重要了,但我正在使用C++。如果有一些系统调用(例如'sysctlbyname()'),我可以让一个或者一个(伪)文件来看看,这很好。 – markshep 2011-04-13 14:22:30

+0

命令'/ usr/sbin/system_profiler SPHardwareDataType | grep“处理器名称”给出_something_,但不是全字符串:'Intel Core 2 Duo' – markshep 2011-04-13 15:17:10

回答

11

您可以将machdep.cpu.brand_string传递给sysctl以检索您要查找的字符串。

[[email protected] ~]$ sysctl machdep.cpu.brand_string 
machdep.cpu.brand_string: Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz 

相同的信息通过sysctl(3)函数公开。

[[email protected] ~]$ cat sys.c 
#include <sys/types.h> 
#include <sys/sysctl.h> 
#include <stdio.h> 

int main(int argc, char *argv[]) { 
    char buf[100]; 
    size_t buflen = 100; 
    sysctlbyname("machdep.cpu.brand_string", &buf, &buflen, NULL, 0); 

    printf("%s\n", buf); 
} 

[[email protected] ~]$ ./sys 
Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz 
0

看一看http://osxbook.com/book/src/。在下载的源文件中有一个名为processor_info.c的文件(以及其他很多好东西),我很确定会给你提供这些信息。

+1

'processor_info.c'中的代码示例(在7-6和7-7中)确实提供了一些关于CPU的信息,但不幸的是没有描述字符串。此外,代码调用'mach_host_self()',似乎需要root权限:-(。 – markshep 2011-04-13 15:15:58