使用 fork 对象

Ano*_*mer 1 fork objective-c jailbreak ios

在检测越狱设备时,为什么如果 fork 进程失败,大多数示例会终止应用程序?这是否意味着设备没有越狱,所以一切正常,没有任何子进程?

int pid = fork();
if (!pid){
    exit(0);
}
if (pid >= 0) {
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*ier 5

PID 为 0 并不意味着分叉失败。这意味着分叉成功并且当前进程是子进程。PID > 0 表示fork 成功并且当前进程是父进程(返回值是子进程的PID)。PID -1 表示失败。

由于应用进程通常被禁止分叉,因此 -1 是预期结果。如果fork允许,则有两个过程。父级返回 YES,子级被终止,因为除了测试是否允许分叉之外,实际上不需要任何其他操作。