Можете ли вы использовать NSRunningApplication в операционных системах, где оно доступно, и использовать sysctl, когда его нет?Я не думаю, что sysctl - это поддерживаемый API, как большинство, но если вы используете его только на старых ОС, у вас должно быть все в порядке.
Попробуйте получить тип процессора для процесса:
cpu_type_t cpuType
size_t cpuTypeSize;
int mib[CTL_MAXNAME];
size_t mibLen;
mibLen = CTL_MAXNAME;
err = sysctlnametomib("sysctl.proc_cputype", mib, &mibLen);
if (err == -1) {
err = errno;
}
if (err == 0) {
assert(mibLen < CTL_MAXNAME);
mib[mibLen] = pid;
mibLen += 1;
cpuTypeSize = sizeof(cpuType);
err = sysctl(mib, mibLen, &cpuType, &cpuTypeSize, 0, 0);
if (err == -1) {
err = errno;
}
}
И проверить CPU_ARCH_ABI64
, чтобы проверить наличие 64-разрядных.