Linux 커널이 중지된 프로세스를 포함하는 새로운 고아 프로세스 그룹에 먼저 SIGCONT를 보낸 다음 SIGHUP을 보내지 않는 이유는 무엇입니까?

Linux 커널이 중지된 프로세스를 포함하는 새로운 고아 프로세스 그룹에 먼저 SIGCONT를 보낸 다음 SIGHUP을 보내지 않는 이유는 무엇입니까?

APUE 라고

부모 프로세스가 종료되면 프로세스 그룹은 고아가 되고 프로세스 그룹에는 중지된 프로세스가 포함되어 있기 때문에 POSIX.1에서는 새로 고아가 된 프로세스 그룹의 각 프로세스에 정지 신호(SIGHUP)를 보내야 합니다. 이어서계속 신호(SIGCONT).

커널은 SIGHUP 이후에 SIGCONT를 보내지만 프로세스는 SIGHUP을 수행하기 전에 SIGCONT에 의해 깨어납니다. 그렇다면 Linux 커널이 SIGHUP 전에 SIGCONT를 보내지 않는 이유는 무엇입니까?

감사해요.

관련이 있지만 답변이 없습니다.보류 중인 차단 해제 신호를 처음 처리하기 전이나 후에 중지된 프로세스의 실행을 재개하는 SIGCONT의 기본 작업이 있습니까?


나는 내 질문에 대답하지 않았습니다.

답변1

귀하의 질문에 답변하셨을 뿐만 아니라, 마지막에 추가하신 링크도 귀하의 질문에 답변해 주셨습니다.

프로세스가 중지되면 운영 체제에서 실제로 처리되는 SIGCONT 및 SIGKILL을 제외한 모든 신호 처리가 중지됩니다.

즉, SIGCONT를 수신하고 처리할 때 프로세스가 재개된 후에만 SIGHUP을 처리할 수 있으므로 SIGCONT 다음에 SIGHUP을 보내더라도 역순으로 처리됩니다.

이제 실제로 SIGCONT를 처리하고 SIGHUP을 처리하기 전에 SIGHUP을 보내는 커널은 두 번째 프로세스가 이미 처리를 위해 대기열에 있기 때문에 SIGCONT 처리와 SIGHUP 처리 사이에서 프로세스가 수행하는 작업을 줄입니다.

관련 정보