Thread bei langen Subroutinen bleibt alles stehen: - Nebenläufigkeit mit fork()? - (2 answers)
Opened by anti at 2004-04-28 20:38

ptk
 2004-04-28 21:00
#81899 #81899
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Variablen, die zur Zeit des forks definiert sind, sind auch im neuen Prozess sichtbar. Somit kannst du auf einfache Weise Parameter uebergeben. Beim Verwenden von fork() muss man (mindestens bei Tk, aber wahrscheinlich auch bei anderen Toolkits) darauf achten, dass man den Kindprozess mit CORE::exit() und nicht mit exit() beendet. Wegen eines Bugs in Tk 804.026 muss man sogar POSIX::_exit() verwenden, aber dieser Bug ist in Tk 804.027 behoben.

Du koenntest auch ueberlegen, ob du aus deinem Skript ein hybrides Skript/Modul machst, dann kannst du es auch per require einbinden und hast mit Parameteruebergabe etc. weniger Probleme.

Wenn du weitere Ergebnisse zurueck an den Vaterprozess schicken willst, musst du eine pipe() aufmachen und die Ausgabe per fileevent() einsammeln.

Es lohnt sich vielleicht auch, in das Modul Tk::ExecuteCommand (-> CPAN) zu schauen.

View full thread bei langen Subroutinen bleibt alles stehen: - Nebenläufigkeit mit fork()? -