linux wait 예제

wait() 함수는 부모 프로세스가 자식 프로세스의 종료를 대기하는데 사용됩니다. 이 함수는 자식 프로세스가 종료되길 기다리는 동안 부모 프로세스를 정지시킵니다. 이를 통해 부모 프로세스가 자식 프로세스의 종료 상태 및 종료 코드를 확인할 수 있습니다.

#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main() {
    pid_t pid = fork();
    
    if (pid == -1) {
        fprintf(stderr, "fork() 실패\n");
        exit(EXIT_FAILURE);
    }
    else if (pid == 0) {
        // 자식 프로세스
        printf("자식 프로세스 실행\n");
        exit(EXIT_SUCCESS);
    }
    else {
        // 부모 프로세스
        printf("부모 프로세스 실행\n");
        
        // 자식 프로세스의 종료를 대기
        int status;
        wait(&status);
        
        if (WIFEXITED(status)) {
            printf("자식 프로세스 정상 종료\n");
            
            // 자식 프로세스의 종료 코드 출력
            printf("종료 코드: %d\n", WEXITSTATUS(status));
        }
        else if (WIFSIGNALED(status)) {
            printf("자식 프로세스 시그널에 의해 종료\n");
            
            // 자식 프로세스를 종료한 시그널 번호 출력
            printf("시그널 번호: %d\n", WTERMSIG(status));
        }
        
        exit(EXIT_SUCCESS);
    }
}

위 예제는 fork() 함수를 사용하여 자식 프로세스를 생성한 후 부모 프로세스가 자식 프로세스의 종료를 대기하는 과정을 보여줍니다. 자식 프로세스가 정상적으로 종료된 경우 WIFEXITED() 함수를 사용하여 자식 프로세스의 종료 코드를 출력하고, 시그널에 의해 종료된 경우 WIFSIGNALED() 함수를 사용하여 종료된 시그널 번호를 출력합니다.

#Linux #wait