다음 스크립트가 있습니다.
#!/bin/bash
echo "We are $$"
trap "echo HUP" SIGHUP
cat # wait indefinitely
SIGHUP
(을 사용하여 kill -HUP pid
) 보낼 때 아무 일도 일어나지 않습니다.
스크립트를 약간 변경하면
#!/bin/bash
echo "We are $$"
trap "kill -- -$BASHPID" EXIT # add this
trap "echo HUP" SIGHUP
cat # wait indefinitely
... 그러면 스크립트가 echo HUP
종료 될 때 바로 작업을 수행합니다 (Ctrl + C를 누르면).
roger@roger-pc:~ $ ./hupper.sh
We are 6233
^CHUP
무슨 일이야? SIGHUP
이 스크립트에 신호를 보내려면 어떻게해야 합니까?
완전한. 누군가 대답으로 바꾸는 것을 좋아합니까?
—
Roger Lipscombe
나는 그것이 그런 식으로 작동한다는 것을 알고 있지만, 나보다 더 통찰력이있는 사람이 그 이유와 이유에 대해 대답 할 것입니다.
—
Kusalananda
while true; do read; done
결국 사용 했습니다. 그렇지 않으면 텍스트를 입력하면 텍스트가 종료되고 Ctrl + C에서 종료되기를 원합니다.
cat
프로세스가 완료 되면 신호가 전달되고 신호 핸들러가 실행됩니다 . 원본 스크립트를 사용 해보고 프로세스를 끝내Ctrl+D
려면을 누르cat
십시오.cat
프로세스가 포 그라운드에있는 동안HUP
신호는 작동하지 않습니다. (쉘 내장) 으로cat
교체하여 다시 시도하십시오read
.