반응형
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)과 같다. (부모의 모든 프로세스중 하나의 자식프로세스가 종료할때까지 프로세스를 정지)
좀더 자세한 설명은 다음 링크 참조
반응형
'컴퓨터 시스템' 카테고리의 다른 글
Shell에 대한 내용 정리 (0) | 2021.11.19 |
---|---|
shell lab 주요 내용 (jobs의 역할) (0) | 2021.11.15 |
shell 주요 함수 정리 (0) | 2021.11.07 |
Little Endian과 Big Endian (0) | 2021.11.01 |
mov와 lea의 비교, 어셈블리 접미사의 의미(q, l, w,b) (0) | 2021.10.28 |