Front page | perl.perl5.porters |
Postings from February 2000
[ID 20000220.005] waitpid usage in perlipc pod
From:
Ben Low
Date:
February 20, 2000 20:50
Subject:
[ID 20000220.005] waitpid usage in perlipc pod
Message ID:
200002210448.PAA18878@hades.snrc.uow.edu.au
This is a bug report for perl from ben@snrc.uow.edu.au,
generated with the help of perlbug 1.26 running under perl 5.00502.
-----------------------------------------------------------------
I've asked on c.l.p.moderated whether this issue is known and/or
corrected in the latest perls, and had one response each way. I have
confirmed it on 5.004_04 and 5.005_02, one person also said 5.005_63
(is that a valid version, maybe they meant _03?). Anyhow:
The perlipc documentation gives an example usage for waitpid as:
use POSIX ":sys_wait_h";
sub REAPER {
my $child;
while ($child = waitpid(-1,WNOHANG)) {
$Kid_Status{$child} = $?;
}
$SIG{CHLD} = \&REAPER; # still loathe sysV
}
$SIG{CHLD} = \&REAPER;
# do something that forks...
But the docs for waitpid show it returning -1 if/when no children are
waiting to be harvested. Thus, the above loop never exits. Should it not
be:
while (($child = waitpid(-1,WNOHANG)) > 0) {
$Kid_Status{$child} = $?;
[Please do not change anything below this line]
-----------------------------------------------------------------
---
Site configuration information for perl 5.00502:
Summary of my perl5 (5.0 patchlevel 5 subversion 2) configuration:
Platform:
osname=solaris, osvers=2.7, archname=sun4-solaris
uname='sunos 5.7 s998_18 sun4u sparc sunw,ultra-1 '
hint=previous, useposix=true, d_sigaction=define
usethreads=undef useperlio=undef d_sfio=undef
Compiler:
cc='gcc', optimize='-O', gccversion=2.8.1
cppflags='-I/usr/local/include'
ccflags ='-I/usr/local/include'
stdchar='char', d_stdstdio=define, usevfork=false
intsize=4, longsize=4, ptrsize=4, doublesize=8
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
alignbytes=8, usemymalloc=y, prototype=define
Linker and Libraries:
ld='gcc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib /usr/ccs/lib
libs=-lsocket -lnsl -lgdbm -ldl -lm -lc -lcrypt
libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
cccdlflags='-fPIC', lddlflags='-G -L/usr/local/lib'
Locally applied patches:
---
@INC for perl 5.00502:
/home/ben/local/lib/perl5
/home/ben/local/lib/perl5/5.00502
/home/ben/local/lib/perl5/site_perl/5.005/sun4-solaris
/home/ben/local/lib/perl5/site_perl/5.005
/usr/local/lib/perl5/5.00502/sun4-solaris
/usr/local/lib/perl5/5.00502
/usr/local/lib/perl5/site_perl/5.005/sun4-solaris
/usr/local/lib/perl5/site_perl/5.005
.
---
Environment for perl 5.00502:
HOME=/home/ben
LANG (unset)
LC_ALL=en_CA
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=.:/home/ben/bin::/home/ben/local/SunOS-5.7-sun4u/bin:/bin:/usr/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/bin:/usr/ucb/:/usr/ccs/bin:/share/bin:/usr/openwin/bin:/usr/openwin/demo
PERL5LIB=/home/ben/local/lib/perl5:/home/ben/local/lib/perl5/5.00502:/home/ben/local/lib/perl5/site_perl/5.005
PERL_BADLANG (unset)
SHELL=/bin/sh
-
[ID 20000220.005] waitpid usage in perlipc pod
by Ben Low