Ich habe das folgende Skript:
#!/bin/bash
echo "We are $$"
trap "echo HUP" SIGHUP
cat # wait indefinitely
Wenn ich sende SIGHUP
(mit kill -HUP pid
), passiert nichts.
Wenn ich das Skript leicht ändere:
#!/bin/bash
echo "We are $$"
trap "kill -- -$BASHPID" EXIT # add this
trap "echo HUP" SIGHUP
cat # wait indefinitely
... dann macht das Skript das echo HUP
Ding richtig, wenn es beendet wird (wenn ich Strg + C drücke):
roger@roger-pc:~ $ ./hupper.sh
We are 6233
^CHUP
Was ist los? Wie soll ich ein Signal SIGHUP
an dieses Skript senden (es muss nicht unbedingt sein )?
while true; do read; done
am Ende verwendet, andernfalls wird es auch durch Eingabe von Text beendet, und ich möchte, dass es bei Strg + C beendet wird.
cat
Prozess abgeschlossen ist. Probieren Sie Ihr ursprüngliches Skript aus und drücken SieCtrl+D
, um dencat
Vorgang zu beenden. Während dercat
Prozess im Vordergrund steht, wird dasHUP
Signal nicht bearbeitet. Versuchen Sie es erneut mitcat
ersetzt durchread
(eine eingebaute Shell).