주로 fork() 를 이용해서 자식 프로세스(:12)를 생성했을때 사용한다.
wait() 를 쓰면 자식프로세스가 종료할때까지 해당영역에서
부모프로스쓰가 sleep() 모드로 기다리게 된다.
이는 자식프로세스와 부모프로세스의 동기화를 위한목적으로
부모프로세스가 자식프로세스보다 먼저 종료되어서 자식프로세스가
고아 프로세스(PPID 가 1)인 프로세스가 되는걸 방지하기 위한
목적이다.
만약 자식 프로세스가 종료되었다면 함수는 즉시 리턴되며,
자식이 사용한 모든 시스템자원을 해제한다.
그런데 어떤이유로 부모가 wait()를 호출하기 전에 자식 프로세스가
종료버리는 경우도 있다(잘못된 메모리 연산등으로 인한 죽음,
혹은 정상적으로), 이럴경우
자식프로세스는 좀비(:12)프로세스가 되는데, wait()함수는 즉시
리턴하도록 되어있다.
wait()의 인자 status 를 통하여 자식 프로세스의 상태를 받아올수
있는데, 자식프로세스의 상태값은 자식프로세스의 종료값 * 256(FF) 이다.
1장. wait(2)
프로세스 종료를 기다린다.
1.1절. 사용법
1.2절. 설명
주로 fork() 를 이용해서 자식 프로세스(:12)를 생성했을때 사용한다. wait() 를 쓰면 자식프로세스가 종료할때까지 해당영역에서 부모프로스쓰가 sleep() 모드로 기다리게 된다. 이는 자식프로세스와 부모프로세스의 동기화를 위한목적으로 부모프로세스가 자식프로세스보다 먼저 종료되어서 자식프로세스가 고아 프로세스(PPID 가 1)인 프로세스가 되는걸 방지하기 위한 목적이다.
만약 자식 프로세스가 종료되었다면 함수는 즉시 리턴되며, 자식이 사용한 모든 시스템자원을 해제한다.
그런데 어떤이유로 부모가 wait()를 호출하기 전에 자식 프로세스가 종료버리는 경우도 있다(잘못된 메모리 연산등으로 인한 죽음, 혹은 정상적으로), 이럴경우 자식프로세스는 좀비(:12)프로세스가 되는데, wait()함수는 즉시 리턴하도록 되어있다.
wait()의 인자 status 를 통하여 자식 프로세스의 상태를 받아올수 있는데, 자식프로세스의 상태값은 자식프로세스의 종료값 * 256(FF) 이다.
1.3절. 반환값
종료된 자식의 프로세스 ID는 에러일경우 -1 그렇지 않을경우 0을 반환한다.
1.4절. 에러
다양한 원인에 의해서 에러가 발생할수 있으며 아래와 같은 에러 메시지들이 있다.
기다리는 자식프로세스가 더이상 존재하지 않을 경우
s 가 소켓(:12)이 아닌 파일일경우
소켓이 연결되어 있지 않을경우
시스템에 연산을 위해서 이용할수 있는 자원이 부족할때
1.5절. 예제
Recent Posts
Archive Posts
Tags