이것은 내 스크립트입니다.
#!/bin/bash
# this is repeat-signal.sh
trap "echo got USR1; wait" USR1
trap "echo got INT" INT
(
kill -s USR1 $$
sleep 100
) &
wait
입력을 통해 실행하면 예상대로 인쇄됩니다 ./repeat-signal.sh
. 그런 다음 (ctrl+c를 사용하거나 다른 터미널에서) 신호를 "got USR1"
보내면 두 줄이 인쇄됩니다.INT
kill
got INT
got USR1
나는 그것이 단지 인쇄될 것이라고 생각했다 got INT
.
got USR1
신호를 보낼 INT
때 이 줄이 인쇄되는 이유는 무엇 입니까? INT
신호가 어떻게든 USR1
신호를 반복하게 만드는 것 같습니다 .
명확히 하기 위해 편집됨:
마지막으로 내 터미널은 다음과 같습니다.
bash-5.0$ ./repeat-signal.sh
got USR1
^Cgot INT
got USR1
편집 2:
실제로 이것은 bash 3.2에서는 발생하는 것 같지만 bash 5.0에서는 발생하지 않습니다.