SIGSTOP
그리고 SIGKILL
걸려 프로세스에 의해 처리 될 수없는 두 개의 신호이다. SIGTSTP
처럼 SIGSTOP
그것을 제외하고 수 를 발견하여 처리 할 수 있습니다.
SIGSTOP
및 SIGTSTP
신호 준비, 해당 트랙의 프로세스를 중지 SIGCONT
. 해당 프로세스를 보낼 때 SIGTERM
프로세스가 실행 중이 아니므로 종료 할 코드를 실행할 수 없습니다.
( SIGTTIN
및 SIGTTOU
백그라운드 작업이 터미널에서 읽거나 쓰려고 할 때 TTY 계층에 의해 생성되는 신호 인 및가 있습니다. 이러한 프로세스는 잡힐 수는 있지만 프로세스를 중지 (정지) 할 수 있습니다 SIGTSTP
. 이 답변의 나머지 부분 에서이 두 가지를 무시하십시오.)
귀하는 CtrlZ과정 A를 전송 SIGTSTP
에 의한 방법으로 특수하게 처리되지 나타납니다, rsyslogd
그래서 단순히중인 프로세스를 일시 중단 SIGCONT
하거나 SIGKILL
.
솔루션은 여기에 보낼 또한 SIGCONT
귀하의 후 SIGTERM
프로세스가 수신 신호를 처리 할 수 있도록.
예:
sleep 999 &
# Assume we got PID 456 for this process
kill -TSTP 456 # Suspend the process (nicely)
kill -TERM 456 # Terminate the process (nicely). Nothing happens
kill -CONT 456 # Continue the process so it can exit cleanly
GNU C 라이브러리에 대한 문서 는 이것을 잘 설명합니다.
프로세스가 중지되는 동안SIGKILL
신호 및 (분명히) SIGCONT
신호를 제외하고 계속 될 때까지 더 이상 신호를 전달할 수 없습니다 . 신호는 보류 중으로 표시되지만 프로세스가 계속 될 때까지 전달되지 않습니다. 신호는 항상 프로세스의 종료를 야기하고, 차단 처리되거나 무시 될 수 없다. 를 무시할 수 있지만 프로세스가 중지 된 경우 항상 프로세스가 계속됩니다. 프로세스에 신호를 보내면 해당 프로세스에 대한 보류중인 정지 신호가 삭제됩니다. 마찬가지로 프로세스에 대한 보류중인 신호는 중지 신호를 수신하면 삭제됩니다.SIGKILL
SIGCONT
SIGCONT
SIGCONT
kill -15
이미 보낸 것을 처리했습니다 ".