signal()
시그널 제어
void (*signal(int sig, void (*func)(int));)(int);
sig
: 시그널 번호(*func)(int)
: 시그널을 처리할 핸들러
SIG_DFL
을 전달SIG_IGN
전달void *()(int)
SIG_ERR
SIGKILL
과 SIGSTOP
은 제어할 수 없음
실행 이후에 자식 프로세스를 포크하면 자식 프로세스에 설정이 상속됨
execve()
로 실행된 프로세스에서는 시그널 설정이 리셋되지만, 무시된 시그널은 계속 무시됨
SIGCHLD
에 대해 SIG_IGN
을 지정하면 자식 프로세스가 종료될 때 좀비 프로세스가 생성되지 않음
자식 프로세스의 종료 코드는 무시됨
만약 부모 프로세스가 자식 프로세스를 wait()
하고 있었다면, 모든 자식 프로세스가 종료될 때까지 실행이 연기되었다가 1
을 리턴