在检测越狱设备时,如果派生过程失败,为什么大多数示例会终止应用程序?这是否意味着设备没有越狱,所以一切正常,没有任何子进程?
int pid = fork();
if (!pid){
exit(0);
}
if (pid >= 0) {
return YES;
}
答案 0 :(得分:4)
PID为0并不意味着派生失败。这意味着派生成功,并且当前进程是子进程。 PID> 0表示派生成功,并且当前进程是父进程(返回值是子进程的PID)。 PID -1表示失败。
由于通常禁止应用进程分叉,因此预期结果为-1。如果允许fork
,则有两个过程。父级返回YES,而子级终止,因为除了测试是否允许使用分叉之外,实际上不需要其他任何子项。