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