!["Ctrl + C" 명령과 "kill -2" 명령을 사용하여 신호를 보내는 것의 차이점은 무엇입니까?](https://linux55.com/image/182255/%22Ctrl%20%2B%20C%22%20%EB%AA%85%EB%A0%B9%EA%B3%BC%20%22kill%20-2%22%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%8B%A0%ED%98%B8%EB%A5%BC%20%EB%B3%B4%EB%82%B4%EB%8A%94%20%EA%B2%83%EC%9D%98%20%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
예를 들어, 아래 스크립트를 실행할 때정수신호와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
.