반응형

waitpid

waitpid(pid, status, options)

기본적으로는 대기하는 집합 내의 하나의 자식 프로세스가 종료할때까지 프로세스를 정지 그리고 그 자식프로세스가 종료했을때, 그 자식을 회수 (회수하지 않으면 zombie process가 된다.)

pid>0이면 pid를 가지는 자식 1개가 대기집합, pid가 -1이면 부모의 모든 자식 프로세스가 대기집합

그리고 pid< -1일 경우 pgid가 |pid|인것을 찾으며, 마지막으로 pid==0일경우 호출한 프로세스와 같은 프로세스 그룹이 종료되는걸 찾음. 

(간단하게 풀어 말하면, 자식 1개를 기다릴 수도 있고, 자신의 모든 자식들에 대해서 기다릴 수도 있고, 특정 그룹을 기다릴 수도 있다는 것임.)

 

options가 WNOHANG이면 자식중 아무것도 종료되지 않았다면 즉시리턴

(쉽게말해서, 종료했다면, 회수하지만, 정지하지않았다면 그냥 넘긴다는 소리인듯.) 

WUNTRACED라면 대기 집합의 프로세스가 종료or 정지할때까지 프로세스를 정지 (정지도 포함 되는것) 

 

이때 WNOHANG | WUNTRACED 를 사용하면, 자식중 하나가 정지했을때도 회수할 수 있다.

 

Return값은 일반적으로 회수된 PID이나, WNOHANG에서 즉시리턴 하면 0이고, error가 발생하면 -1임. 

 

wait는 waitpid의 단순버전으로, waitpid(-1,&status,0)과 같다. (부모의 모든 프로세스중 하나의 자식프로세스가 종료할때까지 프로세스를 정지) 

 

좀더 자세한 설명은 다음 링크 참조 

 

waitpid 함수 사용하기(wait함수와 비교)

waitpid 함수는 wait 함수처럼 자식 프로세스를 기다릴때 사용하는 함수입니다. 즉, 자식 프로세스의 종료상태를 회수할 때 사용합니다. 하지만 waitpid 함수는 자식 프로세스가 종료될 때 까지 차

codetravel.tistory.com

 

반응형

+ Recent posts