tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: wait(2) and SIGCHLD
1. Sample program attached. Change SIG_IGN to SIG_DFL to see the difference.
2. macOS seems to behave the same way, as does Linux.
3. I don't see where POSIX defines or allows this, but given 2., I'm surely
missing something.
4. The wording in wait(2) could be improved to clarify this is only about
SIG_IGN, not SIG_DFL. At least, the NetBSD manpage mentions this at all.
5. Every time I think I knew Unix, I learn otherwise.
#include <err.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
int stat = 0;
int ret;
int main(int argc, char * argv[]) {
signal(SIGCHLD, SIG_IGN);
if (fork()) {
if ((ret = wait(&stat)) < 0) err(1, "wait");
printf("ret %d, stat %d\n", ret, stat);
} else {
exit(42);
}
return 0;
}
Home |
Main Index |
Thread Index |
Old Index