0

我最近一直在使用 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);
4

1 回答 1

0

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

于 2017-06-21T10:35:39.720 回答