글
(1) wait() 함수
: 자식 프로세스가 종료된 다음에 자식 프로세스의 종료 상태를 가져올 때까지 부모 프로세스는 기다린다.
○ 함수원형
#include <sys/types.h>
#include <sys/wait.h>
pid_t wait(int *status);
○ status : 자식프로세스가 종료될 때의 상태 정보가 저장된다.
- 정상종료 : status의 하위 8비트에는 0이 저장되며, 상위 8비트에는 프로세스가 종료되게 한 exit()함수의 인수가 저장된다.
- 비정상 종료 : status의 하위 89비트에는 프로세스를 종료시킨 시그널의 번호가 저장되며, 상위 8비트에는 0이 저장된다.
○ 리턴값
- 성공 시 : 자식 프로세스가 종료되면서 반환되는 값
- 실패 시 : -1
○ 상태 확인하는 매크로
○ 예제소스
○ 결과확인
(2) waitpid() 함수
: 특정 프로세스가 종료 되기를 기다리도록 지정할 수 있고, wait() 함수와 다르게 부모 프로세스와 자식 프로세스 모두 각자 할 일을 할 수 있도록 설정할 수 있다.
○ 함수원형
#include <sys/types.h>
#include <sys/wait.h>
pid_t waitpid(pid_t pid, int *status, int options);
○ 인자 값
- pid : 자식 프로세스의 ID. 아래 설명 참조.
- status : wait() 함수와 같은 역할. (필요 없을 시 NULL)
- option : WNOHANG 입력 시 부모 프로세스는 기다리지 않도록 설정, 0 입력 시 wait()함수와 같이 자식 프로세스의 종료를 기다린다.
○ waitpid()에서 사용하는 pid인자값의 의미
- pid < -1 : pid의 절대값과 동일한 프로세스 그룹ID의 모든 자식 프로세스의 종료를 기다린다.
- pid == -1 : 모든 자식 프로세스의 종료를 기다린다. 만약 pid값이 -1이면 waitpid함수는 wait()함수와 동일하다.
- pid == 0 : 현재 프로세스의 프로세스 그룹 ID와 같은 프로세스 그룹 ID를 가지는 모든 자식 프로세스의 종료를 기다린다.
- pid > 0 : pid값에 해당하는 프로세스 ID를 가진 자식 프로세스의 종료를 기다린다.
○ 예제소스
○ 결과화면
* 좀비 프로세스 : 자식 프로세스가 종료 되었지만, 부모 프로세스가 아직 그 종료를 확인하지 않는 프로세스
* 고아 프로세스 : 자식보다 먼저 부모 프로세스가 죽었을 경우의 자식 프로세스.
'P rogramming > Linux System' 카테고리의 다른 글
파일 정보 검색 :: struct dirent (0) | 2013.11.13 |
---|---|
문자열을 정수로 변환 :: atoi() (2) | 2012.11.12 |
시그널의 등록과 처리 (0) | 2012.05.21 |
파일 컨트롤 함수 :: fcntl() (0) | 2012.05.15 |
메모리 맵핑(mapping) - mmap() / munmap() (8) | 2012.04.24 |
RECENT COMMENT