in reply to Re: $? stuck returning -1...
in thread $? stuck returning -1...

Paul-

I'm confused. If it is supposed to set $?, then doesn't the sample program show that it's not working? My output looks like this:

exit1=0 ret1=Wed Jun 20 15:09:04 CDT 2007 24862: parent pid=24864 24864: child exit2=-1 ret2=Wed Jun 20 15:09:04 CDT 2007 exit2=-1 ret2=Wed Jun 20 15:09:04 CDT 2007 exit2=-1 ret2=Wed Jun 20 15:09:04 CDT 2007 exit2=-1 ret2=Wed Jun 20 15:09:04 CDT 2007 exit2=-1 ret2=Wed Jun 20 15:09:04 CDT 2007
Thanks -Craig

Replies are listed 'Best First'.
Re^3: $? stuck returning -1...
by Joost (Canon) on Jun 20, 2007 at 20:25 UTC
    You're setting $SIG{CHLD} yourself so the wait() implicit in the backticks command will report there are no children.

    Set $SIG{CHLD} to undef before the foreach loop to see that that fixes the problem.

    update:

    $|=1; my $ret1 = `date`; my $exit1 = $?; print STDERR "exit1=$exit1 ret1=$ret1"; $SIG{CHLD} = sub {print "Sigchld\n";wait}; foreach my $i (1..5) { my $ret2 = `date`; my $exit2 = $?; print STDERR "exit2=$exit2 ret2=$ret2"; }
    output:
    exit1=0 ret1=Wed Jun 20 22:29:13 CEST 2007 Sigchld exit2=-1 ret2=Wed Jun 20 22:29:13 CEST 2007 Sigchld exit2=-1 ret2=Wed Jun 20 22:29:13 CEST 2007 Sigchld exit2=-1 ret2=Wed Jun 20 22:29:13 CEST 2007 Sigchld exit2=-1 ret2=Wed Jun 20 22:29:13 CEST 2007 Sigchld exit2=-1 ret2=Wed Jun 20 22:29:13 CEST 2007