Trap-signal in den child-Prozess im hintergrund
Bin ich nicht Falle ein signal, wenn eine Kind - /hintergrund-Prozess.
Hier ist mein einfaches bash-Skript :
#!/bin/bash
echo "in child"
trap "got_signal" SIGINT
function got_signal {
echo "trapped"
exit 0
}
while [ true ]; do
sleep 2
done
Beim ausführen dieser und später
kill -SIGINT (pid)
Alles funktioniert wie erwartet, druckt er 'gefangen' und wird beendet.
Nun, wenn ich das gleiche script aus einem parent-Skript wie dieses :
#!/bin/bash
echo "starting the child"
./child.sh &
Dann das Kind nicht Falle das signal nicht mehr.... ?
Nach dem Wechsel zu verwenden anstelle von SIGTERM SIGINT, es scheint zu funktionieren, richtig... ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
bash
manpage auf OSX (aber es sollten die gleichen sein, die in anderen Versionen) hat dies zu sagen über die signal-handling:weiter auf, unter den
trap
Befehl:Da die Scripte nicht verwenden, job-control standardmäßig, das heißt in dem Fall du redest.
Pro Anmerkung:
Habe ich bemerkt, dass die ZSH nicht ignorieren die Signale hin und her zwischen übergeordneten und untergeordneten Prozess, aber die bash das auch tut. Hier ist die Frage, die ich gepostet habe:
Trapping-CHLD-signal - ZSH funktioniert, aber ksh/bash/sh nicht?