Prozeßsteuerung durch Signale
Prozeßsteuerung durch Signale
Signale sind ein
sehr beliebtes - weil einfaches - Mittel der Prozeßkommunikation.
Wenn Prozeß 1 dem Prozeß 2 ein Signal schickt, so ruft das
Betriebssystem für den Prozeß 2 eine dem Signal zugeordnete
Routine auf, die vpm Programm aus teilweise selbst definiert werden
kann (siehe man signal oder
sigaction). Dort kann dann
entsprechend reagiert werden.
Das Kommando, um einem Prozeß ein Signal zu schicken heißt
kill und erhält als
Parameter Signalname und Prozeß- oder Jobnummer. Man kann also die pid
aus der ps Ausgabe oder die
Jobnummer aus der
Ausgabe von jobs angeben.
Eine Liste der wichtigsten Signale. Eine vollständige Liste erhält
man mit kill -l oder man signal
.
- TERM
- Dieses Signal wird von der Shell
an den aktuellen Prozeß verschickt, wenn man die Tastenkombination
CONTROL-C drückt. Es bedeutet ihm, sich doch bitte zu
beenden. Es kann jedoch ignoriert werden.
- KILL
- Wenn man mit TERM keinen Erfolg hatte, kann man den
Prozeß auf jeden Fall mit KILL beenden, da dieses Signal
nicht ignoriert werden kann. Man sollte dieses Signal
aber möglichst selten verschicken, da dem Prozeß
keine Chance mehr gegeben wird, sich ordentlich zu
beenden. So können unliebsame Effekte entstehen.
- STOP
- Dieses Signal (genauergesagt TSTP, aber das ist fast dasselbe)
wird von der Shell verschickt, wenn man die Tastenkombination CONTROL-Z
drückt. Es suspendiert den Prozeß.
- CONT
- Weist das Betriebssystem an, einen suspendierten
Prozeß weiterlaufen zu lassen.
- HUP
- Teilt dem Prozeß mit, daß seine Verbindung zum Terminal
unterbrochen wurde, z.B. weil ein
xterm geschlossen wurde,
eine Shell beendet oder ein Terminal ausgeschaltet wurde. Der
Prozeß sollte sich daraufhin beenden, das funktioniert jedoch eher
selten.
Beispiele:
kill 654
stop %2
kill -STOP %2
- Siehe auch:
- Status eines Prozeß: Running, Suspendiert,
Blockiert
- Jobkontrolle mit der Shell