为了知道wait()是否有效,检查它是否正确如下?理论上,如果wait()没有失败,应该返回父进程结束的子pid,否则父pid将为1,对吗?
switch (process = fork())
{
case -1:
// Fork fail
perror("Fork failed");
exit(EXIT_FAILURE);
case 0:
//Child process
HERE CODE DOES SOMETHING
exit(EXIT_SUCCESS);
default:
//Parent process
pid=wait(&status);
if(pid==1){
perror("Wait failed");
}else{
exit(EXIT_SUCCESS);
}
}
答案 0 :(得分:4)
引用man 2 wait
:
返回值
wait():成功时,返回已终止子进程的进程ID;的上 错误,返回-1 。
因此,要检查wait(2)
是否失败,这应该足够了:
if (wait(&status) == -1) {
perror("wait failed");
exit(1);
}