Moin, Am Do, den 01.01.2004 schrieb Gerald Goebel um 23:58:
An Alle ein frohes und erfolgreiches neues Jahr,
Dir auch. Gerald, vielen Dank für den Text. Von den meisten Sachen wußte ich gar nicht, daß es sie überhaupt gibt. Mann, ist das verzwickt. :-)
Joerg Rossdeutscher wrote:
Am Mi, den 31.12.2003 schrieb Gerald Goebel um 00:10:
Mit dem exit kannst du ja auch noch was zurückgeben, z. B. 0 für richtig ausgeführt, oder -1 für Fehler. An wen soll das denn gehen?
Ich kann doch normalerweise jeden Prozess (solange er nicht innerhalb von Kernel-Routinen hängt) abschiessen. Wieso soll das hier anders sein?
Es ist nicht anders, der Prozess wird ja auch abgesch0ssen, aber in der Prozessrabelle, bleibt er noch stehen, er lebt also in der Prozesstabelle noch weiter obwohl er tot ist, daher auch der Name: Zombie, lebender Toter.
OK, verstehe. Das hiesse, der Prozess bleibt unter "ps" so lange zu sehen, bis mein Parent "waitpid" ausführt? ...und da ich das ja auch mache, ist er bei mir eben nicht mehr in "ps" zu sehen.
Jetzt ist natürlich die Frage: Welchen Rückgabewert hat er dann? Auch das ist eindeutig geregelt: Da der Kernel keinen Rückgabewert findet, setzt er dafür das Signal ein, mit dem der Prozess abgeschoßen wurde. Für C, gibt es dafür Makros um den Wert auszulesen, ist irgendwas mit AFAIK Bitverschiebung. Damit kannst du denn genau sagen warum der Prozess beendet wurde.
Ja, irgendwas mit Bit 7 wegtun und den Rest rotieren... ich glaube, das habe ich schonmal benutzt.
Und noch eine Verständnisfrage:
1. Ich dissoziiere den Prozess ja (setsid). Das sollte eigentlich (technisch) die Abhängigkeit zwischen den Prozessen beenden. Ich habe das noch nicht getestet, aber theoretisch sollte Child sogar weiterlaufen, wenn Parent beendet wird.
Was verstehst du unter "dissoziiere", bitte Definition.
Ich habe in der Perl-Doku gelesen, wenn man einen Prozess dissoziiert, dann würde er zum Daemon und er wird auch dann nicht beendet, wenn sein Parent nicht beendet. Das hatte ich beabsichtigt. Ah ja, hier: http://www.perldoc.com/perl5.8.0/pod/perlipc.html unter: Complete Dissociation of Child from Parent ...und da steht auch was von "process group leader", was ich früher nicht verstanden hatte. Meine Güte, ich war jung und dumm, jedenfalls gestern.
1. Prozesse 2. Prozessgruppen 3. Sessions
[Erklärungen] Danke!
Für dich könnte das eine Rolle spielen, bei den fontlingen. Wielange muß der Prozeß immer wieder neu angeschmissen werden, er stürzt vieleicht 1mal ab, 16 mal 100 mal, bei 2000 Schriften 10.000 Schriften. Wie willst du das steuern? Mit ner Zufallszahl, Counter?
Das mit "Zufallszahl" verstehe ich jetzt nicht...
War ein Witz!
So isser, der Rheinländer. Wenn er 'ne Kiste sieht, muß er draufsteigen und 'ne Rede halten, die gar nicht komisch ist. :-)))))))))
Steh ich auf'm Denkschlauch? Ich sehe einfach kein Problem mehr.
Ich auch nicht, wenn du weißt, was du machst, die Frage ist nur, brauchst du "setsid"?
Ich hatte die Hoffnung, irgendwann mal an den Punkt zu kommen, wo das Child als Daemon im Hintergrund bleibt und nicht nur für seinen Parent, sondern für alle anderen Skripte als "Preview-Server-Daemon" zur Verfügung steht. Gruß, Ratti -- -o) fontlinge | Font management for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/