C로 작성된 프로세스 2개를 호출하겠습니다.'부모'그리고'어린이'. 부모가 자식을 생성하고, 자식이 일부 코드를 실행한 다음 을 던지는 루프에 들어갑니다 SIGSTOP
. 특정 조건이 충족되면 부모는 자녀를 보내야 하고 SIGTERM
, 그렇지 않으면 부모는 자녀를 보내야 합니다 SIGCONT
.
일시정지 중에 어떻게 SIGTERM
보내고 원하는 결과를 얻을 수 있나요? SIGCONT
그냥 보내면 보내기 전에 SIGTERM
아이가 도착할까봐 걱정되고 , 연달아 보내는 두 개의 신호가 서로 간섭할 수도 있다는 생각도 듭니다.SIGSTOP
SIGTERM
답변1
SIGKILL
일시 중지된 상태의 프로세스가 있는 경우 계속하기 전에는 어떤 신호(세마포어 제외)에도 작동하지 않습니다. 보류 중인 신호는 프로세스의 대기열에 추가됩니다.
따라서 귀하의 경우에 따라 다음을 보내야 합니다.
SIGTERM
그런 다음SIGCONT
SIGCONT
물론 이는 다음과 같이 단순화될 수 있습니다.
if (condition) { send SIGTERM }
send SIGCONT