Tôi đã có đoạn script sau:
#!/bin/bash
echo "We are $$"
trap "echo HUP" SIGHUP
cat # wait indefinitely
Khi tôi gửi SIGHUP
(sử dụng kill -HUP pid
), không có gì xảy ra.
Nếu tôi thay đổi tập lệnh một chút:
#!/bin/bash
echo "We are $$"
trap "kill -- -$BASHPID" EXIT # add this
trap "echo HUP" SIGHUP
cat # wait indefinitely
... Sau đó, tập lệnh thực hiện echo HUP
đúng khi nó thoát (khi tôi nhấn Ctrl + C):
roger@roger-pc:~ $ ./hupper.sh
We are 6233
^CHUP
Chuyện gì đang xảy ra vậy? Tôi nên gửi tín hiệu như thế nào (không nhất thiết phải như vậy SIGHUP
) cho tập lệnh này?
while true; do read; done
Cuối cùng tôi đã sử dụng , nếu không, việc nhập văn bản cũng khiến nó thoát ra và tôi muốn nó thoát khỏi Ctrl + C.
cat
quá trình kết thúc. Hãy thử tập lệnh gốc của bạn và nhấnCtrl+D
để thực hiệncat
quá trình thoát. Trong khicat
quá trình ở phía trước,HUP
tín hiệu không được tác động. Hãy thử lại vớicat
thay thế bằngread
(một vỏ tích hợp).