wait 함수 리눅스

리눅스에서 wait 함수는 부모 프로세스가 자식 프로세스의 실행이 종료되기를 기다리는 데 사용됩니다. 이 함수는 자식 프로세스가 종료될 때까지 부모 프로세스의 실행을 일시적으로 멈추게 합니다.

wait 함수의 구문

wait 함수는 다음과 같은 구문을 가지고 있습니다:

pid_t wait(int* status);

자식 프로세스의 종료 상태

wait 함수를 사용하여 자식 프로세스의 종료 상태를 확인할 수 있습니다. 이는 wait 함수를 호출한 후 status 변수에 저장되는 값으로 나타납니다.

if (WIFEXITED(status)) {
    // 자식 프로세스가 정상적으로 종료됨
    int exit_status = WEXITSTATUS(status);
    // 종료 상태 처리
}

예제 코드

다음은 wait 함수를 사용하는 예제 코드입니다:

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

int main() {
    pid_t pid = fork();

    if (pid == 0) {
        // 자식 프로세스 코드
        printf("자식 프로세스 실행\n");
        sleep(3);
        printf("자식 프로세스 종료\n");
        return 0;
    } else if (pid > 0) {
        // 부모 프로세스 코드
        printf("부모 프로세스 실행\n");
        int status;
        pid_t child_pid = wait(&status);

        if (child_pid == -1) {
            printf("자식 프로세스 대기 중 에러 발생\n");
        } else {
            if (WIFEXITED(status)) {
                int exit_status = WEXITSTATUS(status);
                printf("자식 프로세스 종료 상태: %d\n", exit_status);
            }
        }
    } else {
        fprintf(stderr, "포크 실패\n");
        return 1;
    }

    return 0;
}

이 예제 코드는 부모 프로세스가 자식 프로세스의 실행이 종료될 때까지 기다린 후 자식 프로세스의 종료 상태를 출력합니다.

결론

리눅스에서 wait 함수는 부모 프로세스가 자식 프로세스의 실행을 기다리고 종료 상태를 확인하는 데 사용됩니다. 이를 이용하여 프로세스 간의 동기화와 자식 프로세스의 정상 종료 여부를 확인할 수 있습니다.