wait() 리눅스

리눅스에서 wait() 함수는 부모 프로세스가 자식 프로세스의 종료 상태를 기다리도록 하는 역할을 합니다. 이 함수는 <sys/wait.h> 헤더 파일에 선언되어 있으며, 다음과 같이 사용됩니다:

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

int main() {
    pid_t pid;
    int status;

    pid = fork();
    
    if (pid < 0) {
        perror("fork() 오류");
        exit(1);
    }
    else if (pid == 0) {
        // 자식 프로세스의 실행 코드
        printf("자식 프로세스입니다.\n");
        sleep(2);
        exit(0);
    }
    else {
        // 부모 프로세스의 실행 코드
        printf("부모 프로세스입니다.\n");
        wait(&status);
        if (WIFEXITED(status)) {
            printf("자식 프로세스의 종료 상태: %d\n", WEXITSTATUS(status));
        }
    }

    return 0;
}

위의 예시 코드에서는 fork() 함수를 사용하여 자식 프로세스를 생성한 뒤, 자식 프로세스에서는 몇 초간 대기한 후 종료하고 부모 프로세스에서는 wait() 함수를 사용하여 자식 프로세스의 종료 상태를 기다립니다.

wait() 함수는 자식 프로세스가 종료될 때까지 부모 프로세스를 블록하며, 자식 프로세스의 종료 상태를 확인하고 처리할 수 있습니다. WIFEXITED() 매크로 함수를 사용하여 자식 프로세스가 정상적으로 종료되었는지 여부를 확인하고, WEXITSTATUS() 매크로 함수를 사용하여 자식 프로세스의 종료 상태 값을 얻을 수 있습니다.

위의 코드를 컴파일하고 실행하면 부모 프로세스가 자식 프로세스의 종료 상태를 출력하는 결과를 확인할 수 있습니다.

#리눅스 #wait