X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlfork.pod;h=48d65ed4c589659180468c99b3a1bd6c98f4f33a;hb=c1effa61278e47c916466883d74905b04fedc388;hp=832710a80cd8d21ec4e42d1e93ef14481e8bf90e;hpb=0c2f6559512b2211f892f1a6ae8db4739c5369b4;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlfork.pod b/pod/perlfork.pod index 832710a..48d65ed 100644 --- a/pod/perlfork.pod +++ b/pod/perlfork.pod @@ -95,12 +95,15 @@ manipulation functions applied to the ID returned by fork() will affect the waiting pseudo-process that called exec(), not the real process it is waiting for after the exec(). +When exec() is called inside a pseudo-process then DESTROY methods and +END blocks will still be called after the external process returns. + =item exit() exit() always exits just the executing pseudo-process, after automatically wait()-ing for any outstanding child pseudo-processes. Note that this means that the process as a whole will not exit unless all running pseudo-processes -have exited. +have exited. See below for some limitations with open filehandles. =item Open handles to files, directories and network sockets @@ -177,6 +180,13 @@ the seek position in the parent will change it in the child and vice-versa. One can avoid this by opening files that need distinct seek pointers separately in the child. +On some operating systems, notably Solaris and Unixware, calling C +from a child process will flush and close open filehandles in the parent, +thereby corrupting the filehandles. On these systems, calling C<_exit()> +is suggested instead. C<_exit()> is available in Perl through the +C module. Please consult your systems manpages for more information +on this. + =item Forking pipe open() not yet implemented The C and C constructs are not yet