hello. I think Mouse said it best. There is a difference between SIG_DFL and SIG_IGN, which is how you can not get signaled when a child exists, but wait(2) will still wait for a child if you call it.
Hope that helps. -Brian On Aug 14, 10:10am, Brian Buhrow wrote: } Subject: Re: wait(2) and SIGCHLD } Hello. I'm not sure I've completely understood your question, but I } think you're confusing the issue of whether a child posts a SIGCHLD signal } when it exits versus whether the current process that's calling wait(2) } receives a SIGCHLD when a child exits. The default behavior, as I } understand it, is that if a process has children, by default, it will not } get signaled if those children terminate. However, if that process then } calls wait(2), it will hang until a child terminates, regardless of whether } it's configured to receive the SIGCHLD or not. In that instance, I think } the man page is wrong, at least if code I have running is to be believed. So, } I think there's no difference between the default ignoring of the SIGCHLD } signal and explicitly ignoring it. } -Brian } } On Aug 14, 1:51pm, Edgar =?iso-8859-1?B?RnXf?= wrote: } } Subject: wait(2) and SIGCHLD } } I'm confused regarding the behaviour of wait(2) wrt. SIGCHLD handling. } } } } The wait(2) manpage says: } } } } wait() will fail and return immediately if: } } [ECHILD] The calling process has no existing unwaited-for child } } processes; or no status from the terminated child } } process is available because the calling process has } } asked the system to discard such status by ignoring } } the signal SIGCHLD or setting the flag SA_NOCLDWAIT } } for that signal. } } } } However, ignore is the default handler for SIGCHLD. } } } } So does the } } because the calling process has asked the system } } to discard such status by ignoring the signal SIGCHLD } } mean that explicitly ignoring SIGCHLD is different from ignoring it per default? } >-- End of excerpt from Edgar =?iso-8859-1?B?RnXf?= } } >-- End of excerpt from Brian Buhrow