检查wait()是否失败

时间:2016-11-20 11:47:42

标签: c linux wait waitpid

为了知道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);
        }
}

1 个答案:

答案 0 :(得分:4)

引用man 2 wait

  

返回值

     

wait():成功时,返回已终止子进程的进程ID;的上          错误,返回-1

因此,要检查wait(2)是否失败,这应该足够了:

if (wait(&status) == -1) {
    perror("wait failed");
    exit(1);
}