Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
A. Willemer
Wie werde ich UNIX-Guru
I  ANWENDUNG
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.

II  ADMINISTRATION
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel

III  NETZWERK
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls

IV  DAS X-WINDOW SYSTEM
Die grafische Oberfläche von UNIX einrichten und nutzen

V  PROGRAMMIERUNG VON SHELLSKRIPTEN
Automatisieren von Tasks durch Shell-Skripte.

VI  PERL
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk

VII  PROGRAMMIERWERKZEUGE
C-Compiler, Analyse-Tools, CVS, yacc, diff

VIII  UNIX-SYSTEMAUFRUFE
UNIX-Befehle in eigenen Programmen nutzen

IX  LITERATUR
Weiterführende Literatur zu UNIX und LINUX

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« Timeout setzen: alarm Signale Pipe »

Zombies vereiteln

Einen Zombie könnte man als einen Prozessrest bezeichnen. Genauer gesagt handelt es sich um einen Eintrag in der Prozesstabelle, hinter dem kein echter Prozess mehr steckt. Normalerweise wartet der Vaterprozess auf das Ende des Sohnprozesses. Erst dann läuft er weiter. Dies erreicht der Vaterprozess, indem er wait() aufruft und damit in die Warteschlange gesetzt wird. Der Vater kommt wieder frei, wenn der Sohn beendet wurde. Der Rückgabewert des Aufrufs wait() liefert dann den Exitstatus des Sohnes. Diesen hinterlegt der Sohn bei seinem Ende in der Prozesstabelle. Wenn aber der Vater gar kein wait() ausführt, wird der Eintrag in der Prozesstabelle nie gelöscht. Diesen Eintrag in der Prozesstabelle bezeichnet man als Zombie, weil der Prozess, den er scheinbar anzeigt, gar nicht mehr existiert.

Nun gibt es oft Situationen, in denen nicht gewartet wird, bis der Sohn endet, sondern eben gerade die Parallelität von Prozessen genutzt werden soll. Das heißt, dass besonders bei Dämonen und Serverprozessen immer die Gefahr besteht, dass Zombies entstehen. Um dies zu vermeiden, können Sie das Signal SIG_CLD ignorieren. Das passiert, wenn der Funktion signal() statt der Behandlungsfunktion die Konstante SIG_IGN angegeben word. Dies sagt dem Betriebssystem, dass dieses Signal in Zukunft nicht beachtet werden soll.

signal(SIGCLD, SIG_IGN);

Damit teilt der Vaterprozess mit, dass er keineswegs am weiteren Dasein seines Sohnes interessiert ist, und dass bitte keine Nachrichten für ihn aufgehoben werden sollen.



« Timeout setzen: alarm | Signale | Pipe »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press GmbH 2003
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.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de