~에 따르면POSIX 표준신호와 관련하여("표준 신호" 섹션 참조) 기본 작업이 있습니다 SIGKILL
.SIGINT
학기. 그러나 SIGSTOP
(또는)을 통해 수신 프로세스를 중지하는 경우에는 그렇지 않은 것 같습니다 SIGTSTP
.
단순화를 위해 무한 루프가 있는 프로그램을 만든다고 가정해 보겠습니다.
int main(){
while(1);
}
컴파일하고 실행해 보세요.
$ ./program
그런 다음 을 눌러 CtrlZ중지합니다. 이로 인해 SIGTSTP
신호가 프로세스에 전달됩니다. 이제 SIGINT
프로세스에 신호를 보내고 kill -SIGINT pid
프로세스 테이블을 보면 ps -aux
아직 종료되지 않은 것을 알 수 있습니다. 하지만 보내면 kill -SIGKILL pid
종료됩니다.
둘 다 동일한 기본 작업( SIGINT
예:SIGKILL
학기)?
답변1
SIGKILL
기본적으로 프로세스는 종료되어 차단할 수 없지만, SIGINT
기본적으로 프로세스는 종료되지만 차단될 수 있습니다. ()를 사용하여 CtrlZ프로세스를 백그라운드로 이동하므로 SIGTSTP
신호는 차단되고 SIGINT
실행을 재개할 때까지 프로세스에 전달되지 않습니다().SIGCONT