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
|
| |
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.
| |
|
|
Ihre Meinung? |
|
|
|
|
| |
| |
Shopping |
|
Versandkostenfrei bestellen in Deutschland und Österreich Info
|
|
| |
| |
|