5.6 Signale
Inhalt
Was sind Signale
Signale sind Ereignisse, welche für die Kommunikation zwischen zwei Prozessen (Interprozesskommunikation) verwendet werden können. Signale werden beispielsweise dazu verwendet, einen Prozess zu beenden. Im Lab 3 Troubleshooting hast du bereits gelernt, wie du mit dem kill
Kommando einen Prozess beenden kannst. Das kill
Kommando sendet dazu dem Prozess ein Signal (standardmässig TERM
) welches anschliessend im Script verarbeitet werden kann. Angenommen du hast ein Script geschrieben, welches Daten verarbeitet und diese dazu in einer temporären Datei zwischenspeichert. Wenn du dieses Script nun beendest, möchtest du, dass diese temporäre Datei gelöscht wird. Dazu kannst du im Script einen Handler einbauen, welcher dieses Signal entgegennimmt und die gewünschte Aktion ausführt.
Signale in einem Script
Python
|
|
Im obigen Script definieren wir eine Funktion signal_handler
, welche beim Erhalt eines Signals ausgeführt werden soll. Auf Zeile 16 “verbinden” wir diesen Handler mit den Signalen SIGTERM
und SIGINT
. Das Script schreibt jede Sekunde eine Zeile in die Datei /tmp/tmpfile
. Starte dieses Script auf deinem Computer und beobachte die temporäre Datei anschliessend mit dem Kommando tail -f /tmp/tmpfile
. Beende das Script nach einigen Sekunden mit dem kill
Kommando oder über CTRL+C
. Du wirst feststellen, dass die temporäre Datei von der signal_handler()
Funktion aufgeräumt wurde. Dieses Verhalten lässt sich auch mit einem Bash Script abbilden:
|
|