develooper 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



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About