首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Mac OS X 10.6中确定内核位数?

如何在Mac OS X 10.6中确定内核位数?
EN

Stack Overflow用户
提问于 2010-08-31 23:15:33
回答 3查看 876关注 0票数 5

我知道我可以使用终端和system-profiler命令来确定内核的当前位数,但我正在尝试确定是否有一种方法可以在objective-c中以编程方式获得相同的信息。

我看过Carbon的格式塔,但没有看到任何可以告诉我内核的位性的东西。

有没有人对我如何做到这一点有什么建议?我需要这个信息的调试报告,给出了系统的快照在报告的时间。

谢谢!

更新:我尝试过的一件事是我从Windows世界学到的一个技巧,那就是检查int的大小,比如:

代码语言:javascript
复制
sizeof(int*); //(4 = x86 8 = x64)

但我不认为这是一个解决方案,因为我认为这只会让我了解实际的程序本身是在什么上运行的,而不是实际的操作系统内核。我的理解是,即使操作系统内核运行在32位,你的程序仍然可以运行在64位。

我遇到过其他类似的论坛帖子,但除了使用system_profiler之外,似乎没有一个人能给出答案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-31 23:52:14

请参阅man 3 uname:它填充包含成员machineutsname结构,在英特尔平台上为"x86_64""i386"

代码语言:javascript
复制
struct utsname un;
int res = uname(&un);
if (res >= 0) {
    NSLog(@"%s", un.machine);
}
票数 2
EN

Stack Overflow用户

发布于 2010-09-01 00:07:56

您可以使用sysctlbyname。深入研究mach/machine.h以获得可能的值。

代码语言:javascript
复制
#include <mach/machine.h>
#include <sys/sysctl.h>

void example() 
{
   unsigned int cpuType;   
   size_t size = sizeof(cpuType);
   sysctlbyname("hw.cputype", &cpuType, &size, NULL, 0);

   bool is64 = cpuType & CPU_ARCH_ABI64;

   const char *cpu;

   switch (cpuType) {
      case CPU_TYPE_X86:
         cpu = "x86";
         break;
      case CPU_TYPE_X86_64:
         cpu = "x86_64";
         break;
      case CPU_TYPE_POWERPC:
         cpu = "ppc";
         break;
      case CPU_TYPE_POWERPC64:
         cpu = "ppc_64";
         break;
      case CPU_TYPE_SPARC:
         cpu = "sparc";
         break;
      default:
         cpu = "unknown";
         break;
   }
}
票数 1
EN

Stack Overflow用户

发布于 2010-08-31 23:32:23

您应该能够从命令行中读取系统分析器信息,如下所示:

代码语言:javascript
复制
sys_profile = popen("system_profiler -xml", "r");

请参阅苹果文档中的ProfileSystem示例,了解如何解析它。

软件/系统软件概述/64位内核和扩展可能是您想要的密钥。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3610424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档