Ich habe eine Live-CD, die unter Linux startet und ein kleines Bash-Skript ausführt. Das Skript sucht nach einem zweiten Programm und führt es aus (normalerweise eine kompilierte C ++ - Binärdatei).
Sie sollten in der Lage sein, das zweite Programm abzubrechen, indem Sie Ctrl+ drücken C. Was passieren sollte , ist, dass das zweite Programm anhält und das Bash-Skript die Bereinigung fortsetzt. Was tatsächlich passiert, ist, dass sowohl die Hauptanwendung als auch das Bash-Skript beendet werden. Welches ist ein Problem.
Also habe ich das trap
Builtin benutzt, um Bash anzuweisen, SIGINT zu ignorieren. Und jetzt beendet Ctrl+ Cdie C ++ - Anwendung, aber Bash setzt die Ausführung fort. Groß.
Oh ja ... Manchmal ist die "zweite Anwendung" ein anderes Bash-Skript. Und in diesem Fall macht Ctrl+ Cjetzt überhaupt nichts mehr .
Klar ist mein Verständnis, wie dieses Zeug funktioniert, falsch ... Wie steuere ich, welcher Prozess SIGINT erhält, wenn der Benutzer Ctrl+ drückt C? Ich möchte dieses Signal nur auf einen bestimmten Prozess lenken .
set -m
. Es ist ein bisschen sauberer und einfacher alssetsid
jedes Mal, wenn Sie ein Kind führen.