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; doneCuố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.
catquá 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ệncatquá trình thoát. Trong khicatquá trình ở phía trước,HUPtín hiệu không được tác động. Hãy thử lại vớicatthay thế bằngread(một vỏ tích hợp).