예를 들어, 아래 스크립트를 실행할 때정수신호와Ctrl + C, 스크립트 파일이 즉시 중단됩니다. 그러나 Kill 명령을 사용하여 동일한 프로세스를 실행하려고 하면 인터럽트 신호가 유효하도록 명령이 완료될 것으로 예상됩니다 kill -2 pid
. sleep
이 상황의 원인은 정확히 무엇입니까?
#!/bin/bash
trap 'echo signal received!!' SIGINT
echo "The script pid is $$"
sleep 30
답변1
차이점은 눌렀을 Ctrl-C
때핵심SIGINT
스크립트와 명령에 신호를 보냅니다 sleep
(즉, 전체 스크립트에 신호를 보냅니다).프로세스 그룹), 하지만 (아마도 스크립트에서) kill -INT $pid
신호를 내보냅니다 .$pid
스크립트가 일반적인 대화형 셸에서 시작되었다고 가정하면(즉, 스크립트가 프로세스 그룹 리더임) pid를 무효화하면 됩니다 kill -INT -$pid
.