【问题标题】:Obtaining CPU descriptions on Mac OS X在 Mac OS X 上获取 CPU 描述
【发布时间】:2011-08-04 18:32:49
【问题描述】:

我想以编程方式获取 Mac OS X 上的 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\0 中的 ProcessorNameString 值,但在 OS X 上如何获取该信息?

【问题讨论】:

  • 不确定它是否重要,但我使用的是 C++。如果有一些系统调用(例如sysctlbyname())我可以制作或(伪)文件来查看会很好。
  • 命令 /usr/sbin/system_profiler SPHardwareDataType | grep "Processor Name" 确实给出了 something,但不是完整的字符串:Intel Core 2 Duo

标签: macos


【解决方案1】:

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

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

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

[ben@imac ~]$ 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);
}

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

【讨论】:

  • 在 macOS 12.1 上仍然可以正常工作,包括 M1 系统!
【解决方案2】:

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

【讨论】:

  • processor_info.c 中的代码示例(在 7-6 和 7-7 中)确实提供了有关 CPU 的一些信息,但遗憾的是没有提供描述字符串。代码还调用mach_host_self(),这似乎需要root权限:-(.
猜你喜欢
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多