我一直在最近使用sysctl的很多東西,現在我HW_MACHINE_ARCH變量。我正在使用下面的代碼。請注意,當我嘗試獲取其他變量HW_MACHINE時,此代碼完美工作。我也想過,也許HW_MACHINE_ARCH是一個更深的級別,並把它作爲第三個mib參數,但後來我得到了錯誤「是一個目錄」。任何想法,爲什麼這是行不通的?MacOS使用sysctl()來獲取HW_MACHINE_ARCH「沒有這樣的文件或目錄」
代碼:
#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);
如果你在命令行中運行sysctl的......像這樣'的sysctl -a會發生什麼| egrep -i'hw.machine''?我打賭它沒有找到任何東西 – bruceg
@bruceg適用於我:'hw.machine:x86_64' – duskwuff
適用於sysctlbyname,但是我的代碼有同樣的問題... –