c - MacOS 使用 sysctl() 获取 HW_MACHINE_ARCH 获取 "no such file or directory"

标签 c macos kernel low-level sysctl

我最近一直在使用 sysctl 来做很多事情,现在我使用 HW_MACHINE_ARCH 变量。我正在使用以下代码。请注意,当我尝试获取其他变量 HW_MACHINE 时,此代码可以完美运行。我还认为 HW_MACHINE_ARCH 可能更深,并将其作为第三个 mib 参数,但后来我收到错误“是一个目录”。关于为什么这不起作用的任何想法?

代码:

  #import<sys/sysctl.h>

  char *OSArch = (char *)calloc(32, 1);
  mib[0] = CTL_HW;
  mib[1] = HW_MACHINE_ARCH;
  if (sysctl(mib, 2, OSArch, &size_32, NULL, 0) == -1){
    fprintf(stderr, "[!] OSArch failed. errno: [%d][%s]\n", errno, 
    strerror( errno));
  } else {
    fprintf(stdout, "OSArch: %s\n", OSArch);
    //fprintf(tdout, "buffer int: %d\n", int_buffer);
  }
  free(OSArch);

最佳答案

这是因为您需要使用 HW_MACHINE 而不是 HW_MACHINE_ARCH

关于c - MacOS 使用 sysctl() 获取 HW_MACHINE_ARCH 获取 "no such file or directory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44663911/

相关文章:

c - 在c中读取和打印矩阵

C 中的 CreateProcess 失败

macos - 带旋转的图层支持 View 上的核心动画

linux - 什么是路径//,它与/有何不同

c - 从C中的txt文件中读取链表

c - 使用隐式规则的最简单的 C makefile

linux - 将最后 n 行复制到新文件,然后从原始文件中删除 n 行

swift - 如何在没有类(class)的情况下将 Swift 2.2 中的#selector 用于第一响应者?

linux - 无法在 x86 ubuntu linux 上添加自定义系统调用

linux - request_irq 返回 -16 (-EBUSY)