리눅스 프로그래밍 인터페이스설명하다
26.3.1 SIGCHLD 핸들러 생성
상위 프로세스의 하위 프로세스가 종료될 때마다 SIGCHLD 신호가 상위 프로세스로 전송됩니다.기본적으로, 이 신호는 무시되지만 다음과 같이 캡처할 수 있습니다.신호 처리기 설치. 신호 처리기에서 wait()(또는 유사한)를 사용하여 좀비 자식 프로세스를 가져올 수 있습니다. 그러나 이 접근 방식에는 고려해야 할 미묘한 점이 있습니다.
26.3.3 죽은 자식 프로세스 무시
죽은 자식 프로세스를 처리할 수도 있습니다. SIGCHLD를 SIG_IGN으로 명시적으로 설정하면 나중에 종료되는 모든 하위 프로세스가 좀비 프로세스로 변환되지 않고 시스템에서 즉시 제거됩니다. 이 경우 자식 프로세스의 상태는 단순히 삭제되므로 wait()(또는 이와 유사한 것)에 대한 후속 호출은 자식 프로세스 종료에 대한 정보를 반환할 수 없습니다.
참고하시기 바랍니다. SIGCHLD의 기본 구성 무시할 수 있으며, 명시적으로 처리를 SIG_IGN으로 설정 여기에 설명된 다른 동작으로 이어집니다. 이와 관련하여 SIGCHLD는 신호 간에 고유하게 처리됩니다.
SIGCHLD의 기본 구성과 명시적으로 SIG_IGN으로 설정된 구성의 차이점은 무엇입니까?
감사해요
답변1
SIGCHLD의 처리를 SIG_IGN으로 명시적으로 설정하면 이후에 종료되는 모든 하위 프로세스가 좀비 프로세스로 변환되지 않고 시스템에서 즉시 제거됩니다.
기본 구성을 사용하면 종료 상태가 검색될 때까지 하위 프로세스가 종료 시 좀비가 됩니다. 상위를 나타내 SIGCHLD
도록 설정SIG_IGN
신경쓰지마하위 항목의 종료 코드와 관련하여 종료 시 즉시 수집됩니다.