Hi Horms,
Setting 'local $SIG{'CHLD'} = undef;' works just as good as
outcommenting the line. So I will go for this solution.
It seems more foolprof to have it set to something.. So it's not
completly up to the version of perl currently intalled.. :-)
/Johan
On Mon, 2004-11-08 at 08:41, Horms wrote:
> On Fri, Nov 05, 2004 at 02:42:16PM -0800, Seth Daniel wrote:
> > On Fri, Nov 05, 2004 at 11:05:25PM +0100, Johan Elmerfjord wrote:
> > > Hi Phil,
> > >
> > > It looks very much like the problem I have.
> > > I addressed this issue in the Linux-HA mailinglist, but have not recievied
> > > any suggestions yet.
> > > I found a 'solution' that works for me. But I have no idea of what other
> > > impacts it may have.
> > >
> > > See my problem and 'solution' in my original post:
> > > http://lists.linux-ha.org/pipermail/linux-ha/2004-November/012771.html
> >
> > This is very similar to the solution I arrived at when I started to see
> > this problem. The difference being that I set $SIG{'CHLD'} to undef
> > instead of commenting out the line (local $SIG{'CHLD'} = undef;).
> >
> > The perlipc perldoc page suggests that if you set $SIG{'CHLD'} to
> > 'IGNORE' then wait() will return -1. It would also appear to be setting
> > $? to -1 as well which is where the problem comes in. There isn't
> > really a reason to set $SIG{"CHLD"} to IGNORE since wait() is always
> > called.
>
> Ok that makes some sense. I would guess that slightly older
> versions of perl don't exhibit this behaviour. Did setting
> $SIG{'CHLD'} to undef work? What I really want is for
> there to be no handler on SIGCHLD and for the retun value
> to be picked up by wait. It seems my assumtion that
> $SIG{'CHLD'} = "IGNORE" would do that just because that is
> the way it works in C is wrong.
|