Server/Linux

[Linux] waitpid예제-WNOGANG옵션

annajinee 2017. 7. 10. 17:33

//부모프로세스가 WNOHANG옵션을 사용하여 waitpid를 사용한 예제
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<stdio.h>
#include<stdlib.h>


main()
{
    pid_t pid;
    int status=0;



    if((pid=fork())>0) //pid가 fork하고, 부모프로세스 일 경우
    {
        while(!waitpid(pid, &status, WNOHANG))
//종료한 자식프로세스가 있으면 이를 정상적으로 처리하고, 없으면 곧바로 0을 반환
        {
            printf("parent:%d\n", status++);
            sleep(1); //1초마다 status값을 표준 출력 하면서 자식프로세스의 종료상태를 확인
        }
        printf("parent: child -exit (%d)\n", status);
    }
    else if(pid==0) //자식 프로세스
    {
        sleep(5); //5초동안 대기하다가 exit로 종료하게 된다.
        printf("끝ㅌㅌㅌㅌㅌ\n");
        exit(0);
    }
    else
        printf("fail to fork\n");
}