Date: Tue, 21 May 2013 12:14:51 +0200 From: vilibald wanca <vilibald.wanca@gmail.com> To: freebsd-questions@freebsd.org Subject: Re: signal vs. sigaction and SIGCHLD Message-ID: <CANRpF5eMidvX0qk_TAE-yiw1EhGgdX3qsjwj8%2Be%2Bv7F-RAV40w@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Doesn't wait call suspend the calling process until the child is terminated?
>From man page for wait:
The wait() function suspends execution of its calling process until
status information is available for a terminated child process
But in your case the child process is not terminated. If you use the same
pid = waitpid(-1, &tstat, WUNTRACED); in case of signal you'll get
the same result as with sigaction, or that's what I suspect to happen,
haven't had a chance test it.
Vilda
2013/5/21 Polytropon <freebsd@edvax.de>
>
> On Tue, 21 May 2013 15:24:26 +1000, Noel Hunt wrote:
> > If I recompile with `#undef SIGACTION', waithandler is not
> > called.
> >
> > I should add that even with the sigaction(2) interface, without
> > the `sigprocmask' call, it still doesn't work, which suggests
> > that SIGCHLD is being blocked.
> >
> > Can anyone explain why?
>
> From reading "man 3 signal", I get the following impression:
>
> No Name Default Action Description
> 20 SIGCHLD discard signal child status has changed
>
> The default action is to discard the signal, so the following
> paragraph could make sense:
>
> The sig argument specifies which signal was received. The func procedure
> allows a user to choose the action upon receipt of a signal. To set the
> default action of the signal to occur as listed above, func should be
> SIG_DFL. A SIG_DFL resets the default action. To ignore the signal func
> should be SIG_IGN. This will cause subsequent instances of the signal to
> be ignored and pending instances to be discarded. If SIG_IGN is not
> used, further occurrences of the signal are automatically blocked and
> func is called.
>
> From my limited understanding, maybe this could help you find
> an explanation of the observed behaviour?
>
> Also compare /usr/include/sys/signal.h for the definition of
> the involved typedef's.
>
>
> --
> Polytropon
> Magdeburg, Germany
> Happy FreeBSD user since 4.0
> Andra moi ennepe, Mousa, ...
> _______________________________________________
> freebsd-questions@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANRpF5eMidvX0qk_TAE-yiw1EhGgdX3qsjwj8%2Be%2Bv7F-RAV40w>
