Übergeben Sie SIGINT durch das Bash-Skript an die Anwendung

464
sizzzzlerz

Ich habe eine in C ++ geschriebene Linux-Anwendung, die den SIGINT-Interrupt abfängt, um vor dem Beenden eine letzte Bereinigung durchzuführen. Ich rufe diese Anwendung in einem Bash-Skript auf. Wenn ich jetzt Control-C mit dem Bash-Skript im Vordergrund eingebe, wird das Skript wie das aufgerufene Programm beendet, ohne jedoch den endgültigen Bereinigungscode auszuführen. Wie kann ich den Interrupt durch das Bash-Skript direkt an die Anwendung übergeben, was zur endgültigen Bereinigung und dann zu einem normalen Exit führt, wodurch das Skript selbst beendet wird?

1

2 Antworten auf die Frage

1
Mikey T.K.

bashhat auch die Fähigkeit, SIGINT abzufangen . Es ist möglich, das Signal einzufangen, damit das Skript nicht stirbt, und dann im Trap-Handler killdas Signal an Ihre Anwendung weiterzuleiten.

1
infixed
#somecommand has to be a unique substring of the command being run  trap "kill -3 %?somecommand" sigint  somecommand& wait %?somecommand