I will try to create a patch, but it will take some weeks.
Before creating the patch, could I get some feedback?
This is my proposal to changes:
Added at end of “=item fork” in pod/perlfunc.pod
On some platforms such as Windows, where the fork() system call is not available, Perl can be built to emulate fork()in the Perl interpreter. The emulation is designed to, at the level of the Perl program, be as compatible as possible with the “Unix” fork(). It has however some limitation that has to be considered, for all in code intended to be portable. See L<perlfork> for more details.
Added at end of =item kill SIGNAL, LIST in pod/perlfunc.pod
On some platforms such as Windows where the fork() system call is not available. Perl can be built to emulate fork() at the interpreter level. The emulation has some limitation related to kill that has to be considered, for code running on Windows and in code intended to be portable. See L<perlfork> for more details.
Added at the end of =item kill() in pod/perlfork.pod
There is a probability that the process which implements all the pseudo-processes is blocked.
New section added before =head1 BUGS in pod/perlfork.pod
=head1 PORTABLE PERL CODE
In portable Perl code, kill(9, $child) must not be used. The forked processes must terminate themselves.
The kill(9) protocol is “taken from Unix,” and it does not have a good parallel in the Windows world. In Windows forked processes are implemented as pseudo-processes.
To use kill(9, $child) for pseudo-processes is unsafe and there is a probability that the process which implements all the pseudo-processes is blocked. The outcome of kill on a pseudo-process, depends on the timing in the operating system, and code that has worked, suddenly can fail, resulting in errors which are difficult to find.
|