Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Linux-UNIX-Programmierung von Jürgen Wolf
Das umfassende Handbuch – 2., aktualisierte und erweiterte Auflage 2006
Buch: Linux-UNIX-Programmierung

Linux-UNIX-Programmierung
1216 S., mit CD, 49,90 Euro
Rheinwerk Computing
ISBN 3-89842-749-8
gp Kapitel 8 Signale
  gp 8.1 Grundlage zu den Signalen
    gp 8.1.1 Signalmaske
    gp 8.1.2 Signale und fork()
    gp 8.1.3 Signale und exec
    gp 8.1.4 Übersicht zu den Signalen
  gp 8.2 Das neue Signalkonzept
    gp 8.2.1 Wozu ein »neues« Signalkonzept?
  gp 8.3 Signalmenge initialisieren
  gp 8.4 Signalmenge hinzufügen oder löschen
  gp 8.5 Signale einrichten oder erfragen
    gp 8.5.1 Einen Signalhandler einrichten, der zurückkehrt
  gp 8.6 Signal an den eigenen Prozess senden – raise()
  gp 8.7 Signale an andere Prozesse senden – kill()
  gp 8.8 Zeitschaltuhr einrichten – alarm()
  gp 8.9 Prozesse stoppen, bis ein Signal eintritt – pause()
  gp 8.10 Prozesse für eine bestimmte Zeit stoppen – sleep() und usleep()
  gp 8.11 Signalmaske erfragen oder ändern – sigprocmask()
  gp 8.12 Prozess während einer Änderung der Signalmaske stoppen – sigsuspend()
  gp 8.13 Prozesse synchronisieren


Rheinwerk Computing

8.7 Signale an andere Prozesse senden – kill()  toptop

Mit der Funktion kill() können Sie Signale an andere Prozesse senden. Richtig eingesetzt, kann mit dieser Funktion aber auch mehr erreicht werden, als wie gewöhnlich in der Konsole Prozesse zu beenden. Ein Beispiel, das hier gleich demonstriert werden soll, wäre das Synchronisieren von zwei Prozessen (Eltern- und Kindprozess). Zuerst die Syntax von kill():

int kill (pid_t pid, int sig_nr) ;

Damit senden Sie das Signal sig_nr an einen Prozess, der mit pid spezifiziert wird. Eine Besonderheit ist es, wenn Sie hier für das Signal sig_nr die 0 verwenden. Damit können Sie überprüfen, ob an den Prozess oder die Prozessgruppe mit der pid überhaupt ein Signal geschickt werden kann. Kann kein Signal an den Prozess geschickt werden, liefert kill() als Rückgabewert -1 zurück – was auch für jeden anderen Fehler der Funktion zutrifft. Bei Erfolg gibt kill() immer 0 zurück. Häufig wird -1 zurückgegeben, weil der Prozess mit der pid gar nicht mehr existiert.

Bei der Angabe von pid werden vier mögliche Angaben unterschieden:


Tabelle 8.8    Mögliche Angaben für pid bei kill() und deren Bedeutung

pid-Angabe Bedeutung
pid > 0 Das Signal geht an den Prozess mit der Prozess-ID pid.
pid == 0 Das Signal erhalten alle Prozesse, welche die PGID (process group identification (number)) des aktuellen Prozesses tragen (dazu gehört natürlich auch der aktuelle Prozess).
pid < –1 Das Signal erhalten alle Prozesse, deren PGID gleich dem absoluten Wert von pid ist.
pid == –1 Alle Prozesse mit Ausnahme von init erhalten das Signal. Dass man dafür Superuser-Rechte benötigt, leuchtet ein.

Um ein Signal an andere Prozesse zu schicken, muss man natürlich auch entsprechende Rechte für den Prozess haben. Der Superuser darf logischerweise an alle Prozesse Signale senden. Bei allen anderen muss beim Sender die reale oder effektive User-ID identisch mit der realen oder effektiven User-ID des Empfängers sein. Ein spezieller Fall ist das Signal SIGCONT, das von jedem gesendet werden kann, der Teil derselben Session des Empfängers ist.

 << zurück
  
  Zum Katalog
Zum Katalog: Linux-UNIX-Programmierung
Linux-UNIX-
Programmierung

bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Linux-Server






 Linux-Server


Zum Katalog: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Katalog: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Katalog: Shell-Programmierung






 Shell-
 Programmierung


Zum Katalog: Linux Handbuch






 Linux Handbuch


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info





Copyright © Rheinwerk Verlag GmbH 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de