苹果app的进程是否运行在转译模式(Rosetta translation),通过调用sysctlbyname
函数,传入sysctl.proc_translated
标识来判断
/// 返回 1 表示在Rosetta translation模式 ;返回 0 表示在Native Code模式;返回 -1,表示发生错误
int processIsTranslated() {
int ret = 0;
size_t size = sizeof(ret);
if (sysctlbyname("sysctl.proc_translated", &ret, &size, NULL, 0) == -1)
{
if (errno == ENOENT)
return 0;
return -1;
}
return ret;
}
参考地址https://developer.apple.com/documentation/apple_silicon/about_the_rosetta_translation_environment#3616845