내가 좋아하는 SIGCHLD 핸들러의 몇 가지 예를 참조 다시 설치SIGCHLD 핸들러는
void child()
{
wait(0);
signal(SIGCHLD, child);
}
void server_main()
{
...
signal(SIGCHLD, child);
...
for(;;;) {
...
switch(fork()) {
...
}
}
이 저를 혼동 핸들러의 두 부분 : 1). SIGCHLD는 자식이 종료되거나 중지 될 때 잡힌다. 그럼 처리기 안에서 기다려야하는 이유는 무엇입니까? 신호가 이미 도착했습니다. 2). 왜 SIGCHLD 핸들러를 다시 설치해야합니까? 신호 호출이 처리기를 한 번만 설치하는 것이 아닌가?
감사합니다.
감사합니다. 첫 번째 부분을 봅니다. 두 번째의 경우 신호 처리기가 상위 권한에 설치되어 있습니까? 왜 여러 자식 프로세스가 죽었을 때 신호 처리기가 효과가 없을 수 있습니까? – Oxdeadbeef
설명을 sarnold 님이 보시고, 꽤 잘 설명해 주셨습니다. – halfdan