This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
waitpid doesn't work with WIFSTOPPED
authorBo Lindbergh <blgl@stacken.kth.se>
Fri, 13 May 2011 04:42:03 +0000 (21:42 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Wed, 18 May 2011 21:42:46 +0000 (14:42 -0700)
commit12a72a5a8ef940059c8665323da38720b7a53395
treecb7a3cb1c1b7ab5502eb15b7be2949bcf77626c9
parentcb8578ffae704f3e20f9f83baa8b9542a9b6add6
waitpid doesn't work with WIFSTOPPED

> Quoth Emmanuel Rodriguez:
>> I'm see a strange behavior in the fonction WIFSTOPPED($?) when
>> waitpid($pid, WUNTRACED) is invoked and that the child process
>> receives a stop signal. Under this conditions one would expect that
>> WIFSTOPPED($?) would return a true value, but that's not what is
>> happening. A similar program written in C will have the same macro
>> return true instead of false under the same conditions.
>>
>> I can reproduce this with the default perl provided by Ubuntu 9.10 and
>> OS X 10.6. Which lets me guess that this is not a distro related bug.
>
> This is a documentation error.  POSIX.pod incorrectly claims that
> you can pass the value of $? to WIFEXITED and its relatives.
> You must use the raw status value from ${^CHILD_ERROR_NATIVE} instead.

And here's the patch.  Note that perlvar.pod gets it right already.

/Bo Lindbergh
ext/POSIX/lib/POSIX.pod