Mailinglist Archive: opensuse-programming-de (174 mails)

< Previous Next >
Re: forken in perl
  • From: Joerg Rossdeutscher <ratti@xxxxxxxxxxx>
  • Date: Fri, 02 Jan 2004 12:58:04 +0100
  • Message-id: <1073044684.733.36.camel@xxxxxxxxxxx>
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/
< Previous Next >
List Navigation
Follow Ups
References