Saya punya skrip berikut:
#!/bin/bash
echo "We are $$"
trap "echo HUP" SIGHUP
cat # wait indefinitely
Ketika saya mengirim SIGHUP
(menggunakan kill -HUP pid
), tidak ada yang terjadi.
Jika saya mengubah sedikit skrip:
#!/bin/bash
echo "We are $$"
trap "kill -- -$BASHPID" EXIT # add this
trap "echo HUP" SIGHUP
cat # wait indefinitely
... lalu skrip melakukan echo HUP
hal yang benar saat keluar (ketika saya menekan Ctrl + C):
roger@roger-pc:~ $ ./hupper.sh
We are 6233
^CHUP
Apa yang sedang terjadi? Bagaimana saya harus mengirim sinyal (tidak harus SIGHUP
) ke skrip ini?
while true; do read; done
pada akhirnya, jika tidak memasukkan teks menyebabkannya berhenti juga, dan saya ingin itu berhenti pada Ctrl + C.
cat
proses selesai. Coba skrip asli Anda dan tekanCtrl+D
untuk membuatcat
proses keluar. Sementaracat
proses berada di latar depan,HUP
sinyal tidak ditindaklanjuti. Coba lagi dengancat
diganti olehread
(built-in shell).