http://qs321.pair.com?node_id=959381


in reply to Monitoring child processes

In addition to moritz's comment about waitpid: SIGCHLD is handled differently to other signals on most UNIX's, in that it does not by default kill the process it signals.
On Linux, check man 7 signal for more information. It is possible that Solaris handles them differently, so it would be wise to look at the equivalent man pages there as well.

Replies are listed 'Best First'.
Re^2: Monitoring child processes
by rovf (Priest) on Mar 13, 2012 at 15:54 UTC
    SIGCHLD is handled differently to other signals on most UNIX's, in that it does not by default kill the process it signals.
    Correct, and at least on Linux (the Solaris docs are not precise about this), the default for SIGCHLD seems to be "ignore". That's why I was so puzzled, that in my Perl program I had to explicitly set it to IGNORE to get things working...

    -- 
    Ronald Fischer <ynnor@mm.st>
      There is a low level data structure called sigaction. Without diving into the Perl guts, I really don't know what Perl does to this structure. But apparently it does something different than just not writing to it at all - I presume whatever Perl does is an attempt at multi-platform operation that on your particular platform does something that you didn't expect.