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