Was ist ein Zombie ?

Dieses Thema im Forum "SuSE / OpenSuSE" wurde erstellt von bobo, 18.03.2007.

  1. bobo

    bobo Eroberer

    Dabei seit:
    07.04.2006
    Beiträge:
    71
    Zustimmungen:
    0
    HI,

    sorry der Frage wegen, aber was ist wenn da bei Top oben steht 1 Zombie ?
    Was ist das.

    Gruß
    bobo
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Alexander, 18.03.2007
    Zuletzt bearbeitet: 18.03.2007
    Alexander

    Alexander InfoAssi

    Dabei seit:
    28.03.2004
    Beiträge:
    192
    Zustimmungen:
    0
    http://www.informatikserver.at/LHB/node148.html#SECTION00634200000000000000
     
  4. bobo

    bobo Eroberer

    Dabei seit:
    07.04.2006
    Beiträge:
    71
    Zustimmungen:
    0
    Vielen Dank für die ausführliche Information !

    Gruß
    bobo
     
  5. #4 angelsfall, 18.03.2007
    Zuletzt bearbeitet: 18.03.2007
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    Mal anders umschrieben:

    Jeder Prozess hat einen Rückgabewert, also er gibt zurück, ob alles OK war, oder eben ein Fehler vorlag etc. Wenn nun ein Prozess einen Kindprozess erzeugt hat, ist dies der Elternprozess zu diesem Kind und damit dafür zuständig, d.h. es holt dessen Rückgabewert bei dessen Beendigung ab. Es gibt daher im Vaterprozess bestimmte Punkte, wo auf den Kindprozess gelauscht wird, ob er sich beendet hat und daher was zu sagen hat (nämlich seinen Rückgabewert). Wenn nun ein Programmierer schlecht programmiert hat, kann es sein, dass der Rückgabewert durch irgendwelche Umstände vom Kindprozess nie abgeholt wird. Das Kind kann aber solange nicht wirklich sterben, wie es seinen Rückgabewert noch nicht dem Elternprozess übergeben hat. Daher befindet es sich in einem Dämmerzustand (= Zombie :)). Es belegt dabei keinen Speicher, es taucht nur noch in der Prozessliste auf.
    Es gibt auch die Möglichkeit, dass ein Vaterprozess stirbt, sich die Kinder aber noch nicht beendet haben. Wenn diese sich beenden, können sie ja nun keine Rückgabe machen. Dies bezeichnet man als verwaiste Prozesse. Verwaiste Prozess werden dem Über-Prozess "init" mit der Prozess-ID 0 übergeben, er adoptiert sie praktisch und nimmt deren Rückgabewerte entgegen, damit sich die Prozesse beenden können. Dieser init-Prozess wird nicht selbst von einem Prozess angestoßen, sondern vom Kernel initiiert. (Er kann allerdings keine Zombies annehmen, wo deren Elternprozesse noch laufen. Sie müssen dazu erst verwaisen.)

    So hab ich das verstanden. Korrigiert mich, wenn ich falsch liege :)
     
  6. #5 marcellus, 04.08.2007
    marcellus

    marcellus Kaiser

    Dabei seit:
    09.05.2007
    Beiträge:
    1.392
    Zustimmungen:
    0
    Sry fürs thread ausgraben, aber ich hab zu dem thema noch ein paar fragen.

    Ich les gerade linux-unix-programmierung und versteh nicht ganz was diese Zeile macht.

    Code:
    pid = fork ();
    
    Es geht hier im speziellen um dieses Programm: http://www.pronix.de/pronix-170.html
    (daemon.c)

    Es wird ein Prozess gestartet, schon klar, nur was und warum und was macht der und wieso steht oben irgendwas von wegen signalhandler und was hat das ganze mit zombies und wait() zu tun?
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. Mortl

    Mortl Grünschnabel

    Dabei seit:
    09.06.2007
    Beiträge:
    6
    Zustimmungen:
    0
    Ort:
    Bayerischer Wald
    Hi,

    fork "klont" ganz einfach den aktuellen Prozess. Der neue Prozess ist dann ein Kind von diesem, hat aber seine eigene PID.

    Am Rückgabewert von fork läst sich erkennen in welchem Prozess man sich befindet. Gibt fork 0 zurück befindet man sich im Kindprozess, im "Vaterprozess" wird die PID des Kindprozesses zurückgegeben.

    IMHO entsteht ein Zombie wenn der Kindprozess mit seiner Arbeit fertig ist, aber der Exit-Status nicht vom Vaterprozess verarbeitet wird(glaub mit wait() bzw. waitpid()).

    Alle Klarheiten beseitigt? :D

    Ist eigentlich das falsche Forum für lange Erklärungen, am besten nen Thread im C/C++ Forum aufmachen!

    mfg
    Mortl

    PS: Das Buch Linux-UNIX-Programmierung hab ich auch daheim, kann ich wärmstens empfehlen :)
     
  9. #7 marcellus, 04.08.2007
    marcellus

    marcellus Kaiser

    Dabei seit:
    09.05.2007
    Beiträge:
    1.392
    Zustimmungen:
    0
Thema:

Was ist ein Zombie ?

Die Seite wird geladen...

Was ist ein Zombie ? - Ähnliche Themen

  1. Ursache für Zombie finden

    Ursache für Zombie finden: Hallo, ich habe jemandem auf einer Linux Kiste gestattet, einige Skripte abzulegen. Jedoch habe ich nun haufenweise Zobies in der Prozessliste....
  2. Zombieprozesse beenden

    Zombieprozesse beenden: Hallo! Ich habe mal wieder ne Frage bzw. brauche ich mal eure Meinung. Können Zombieprozesse beendet werden, wenn der Zombieprozess selbst...