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