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 HUPDing 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 SIGHUPan dieses Skript senden (es muss nicht unbedingt sein )?
while true; do read; doneam Ende verwendet, andernfalls wird es auch durch Eingabe von Text beendet, und ich möchte, dass es bei Strg + C beendet wird.
catProzess abgeschlossen ist. Probieren Sie Ihr ursprüngliches Skript aus und drücken SieCtrl+D, um dencatVorgang zu beenden. Während dercatProzess im Vordergrund steht, wird dasHUPSignal nicht bearbeitet. Versuchen Sie es erneut mitcatersetzt durchread(eine eingebaute Shell).