[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Perl: Subshell



Hi,

Moritz Karbach <mailinglist <at> karba.ch> writes:
> Wenn ich das child kille, indem ich vom parent aus `kill $pid`
> mache, läuft das externe binary weiter, nur das child stirbt.
> Daran ändert sich auch nichts, wenn ich nach exec "binary" ein
> "wait" einfüge oder wenn ich statt exec system oder backticks
> benutze...

bist du dir sicher, dass du das externe Program auch mit exec()
gestartet hast? Denn: exec() *ersetzt* das aktuelle Programm (also
das Kind) durch dein externes Programm. Wenn du nun die PID deines
Childs abschießt, schießt du damit das externe Programm ab, da es
ja die PID des Childs übernommen hat. Das Child, was du geforkt
hast, also einen Teil deines Perl-Programms, gibt es dann nicht mehr.

Anders ist das bei system() und Backticks: Dort läuft das Child
weiter, und das externe Programm ist ein eigener Prozess. Wenn du
dort dann die Kind-PID killst, lebt das externe Programm in der Tat
weiter.


-- Ingo

-- 
Linux, the choice of a GNU | Failure is not an option. It comes bundled 
generation on a dual AMD-  | with your Microsoft product.  
Athlon!                    | 



Reply to: