X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlfork.pod;h=832710a80cd8d21ec4e42d1e93ef14481e8bf90e;hb=a537debe17982e491ffa12d12441cf74a452acb2;hp=82ac6891dbdeeae472ad773df5f7585327505254;hpb=ee8c7f5465f003860e2347a2946abacac39bd9b9;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlfork.pod b/pod/perlfork.pod index 82ac689..832710a 100644 --- a/pod/perlfork.pod +++ b/pod/perlfork.pod @@ -4,6 +4,11 @@ perlfork - Perl's fork() emulation =head1 SYNOPSIS + NOTE: As of the 5.8.0 release, fork() emulation has considerably + matured. However, there are still a few known bugs and differences + from real fork() that might affect you. See the "BUGS" and + "CAVEATS AND LIMITATIONS" sections below. + 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. @@ -203,7 +208,6 @@ write to a forked child: else { # child while () { print; } - close STDIN; exit(0); } @@ -233,7 +237,6 @@ And this one reads from the child: else { # child print "pipe_from_fork\n"; - close STDOUT; exit(0); } @@ -282,6 +285,15 @@ representation for pseudo-process IDs will be implemented in future. =item * +In certain cases, the OS-level handles created by the pipe(), socket(), +and accept() operators are apparently not duplicated accurately in +pseudo-processes. This only happens in some situations, but where it +does happen, it may result in deadlocks between the read and write ends +of pipe handles, or inability to send or receive data across socket +handles. + +=item * + This document may be incomplete in some respects. =back