Moin, Am Mo, den 29.12.2003 schrieb Gerald Goebel um 22:27:
Joerg Rossdeutscher wrote:
fork dupliziert den Thread und seinen Speicher. Damit teilen beide zwar
fork erzeugt normal einen neuen Prozess, keinen Thread.
OK.
die gleichen offenen Files, Variablen sind aber unabhängig voneinander.
Das heißt, alle Variablen sind Threadsafe? Warum benutze ich dann threads und nicht gleich eigene Prozesse?
Da komme ich jetzt mit meinem Wissen nicht mit. "Das Ding" (Prozess, task, thread,...?) wird im Speicher dupliziert. Die Variablen sind, wie in zwei verschiedenen Programmen, völlig unabhängig voneinander. Beide "Dinger" teilen sich aber das gleiche Environment, da das ebenfalls dupliziert wurde, also offene Dateien.
Außerdem disoziiere ich den Child-Prozess. Damit sollte er eigentlich eigenständig werden und "dämonisieren". Was auch der Sinn der Sache ist.
Das hast du ausprobiert? der Child läuft unter ppid == 1?
ppid? Du meinst die Prozess-ID? Die scheint sich durch setsid nicht zu ändern. Die ausgabe der PID, in perl mit "print $$", ergibt für Child einen um 1 größeren Wert als für Parent, zum Beispiel 1000 und 1001.
Ich bin mir jetzt zu 99% sicher, das du mit einem Perl arbeitest, welches nicht das nativ fork() benutzt, sondern diese fork-emulation.
Die sollte eigentlich nur unter Windows laufen: --- Perl provides a fork() keyword that corresponds to the Unix system call of the same name. On most Unix‐like platforms where the fork() system call is available, Perl’s fork() simply calls it. --- 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/