Я думаю, что Ваша система пропускает необходимое language pack
для показа корректного слова, подходящего для языка, Вы использовались. Выполните Language Support
приложение и установите то, в котором Вы нуждаетесь. Не забывайте нажимать Apply System wide
также.
Можете ли вы использовать 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-разрядности.
Вы не говорите, каковы ваши требования, но класс NSRunningApplication , представленный в 10.6, предлагает действительно простой интерфейс для этого. Документы в настоящее время немного недоступны, но они есть.