2017-11-10 2 views
-1

하위 프로세스를 시작하는 부모 프로세스를 시작했지만 부모 프로세스가 SIGINT을 수신한다고 가정합니다. 부모님이 퇴장하기를 원하지만 아이 프로세스가 오래 머물거나 좀비가되는 것을 원치 않습니다. 죽을 지 확인해야 해.상위 프로세스가 하위 프로세스가 SIGINT를 수신했는지 여부를 판별 할 수 있습니까?

그 어린이도 SIGINT을 받았다고 판단 할 수 있다면 그 사람은 아마 스스로 청소할 것입니다. 이 경우 간단히 끝나고 나갈 때까지 잠시 기다리는 것을 선호합니다. 그러나 SIGINT을받지 못한 경우 즉시 SIGTERM (또는 SIGKILL)을 보내고 부모가 자체 정리 작업을 진행하도록 할 것입니다.

어린이가 SIGINT을 수신했는지 어떻게 알 수 있습니까? (심지어 SIGINT ...에 응답하지 않을 수도 있다는 사실을 제외하고) 부모가 전경 프로세스 그룹에서 실행 중인지 아닌지에 따라 추측해야합니까? 프로그래밍 방식으로 SIGINT이 전송 된 경우 Ctrl+C이 아닌 경우 어떻게됩니까?

+0

어떻게'SIGINT'가 완료 되었습니까? Ctrl-C는 일반적으로 프로세스 그룹에 부여됩니다 .... –

+0

불명확 한 질문입니다. 관련 질문 (동일한 OP로) –

+0

관련 질문 : https://stackoverflow.com/q/47224241/841108 –

답변

0

자녀가 SIGINT를 받았는지 어떻게 알 수 있습니까?

아마도 그렇게 할 수 없습니다. 자녀에게 을 처리하면SIGINT (무시할 수 있음)이 무엇이되어야하는지가 중요합니다. 다른 질문은 my answer을 참조하십시오.

그러나 많은 경우에 Ctrl C에 의해 전송 된 신호가 프로세스 그룹으로 전송되었습니다. 그렇다면 그 신호도있을 것입니다.

병리학적인 경우 전체 시스템은 thrashing이고 어린이 프로세스는 아직 신호 처리를 예약하지 않았습니다.

부모를 종료하고 싶지만 자식 프로세스가 오래 머물러 있거나 좀비가되고 싶지 않습니다. 죽을 지 확인해야 해.

아마도 어딘가에서 daemon(3)을 사용하고 싶습니까?

나는 그 (의욕없는) 동기를 추측해야하기 때문에, 나는 당신의 질문을 이해하지 못한다. 작업 제어 또는 쉘 구현에 관심이 있습니까? 어떤 구체적인 경우에 당신은 실제로 그 아이가 SIGINT을 얻었고 그게 무슨 뜻입니까?

관련 문제