sigchld.c 629 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <sys/signal.h>
  4. #include <unistd.h>
  5. void test_handler(int signo)
  6. {
  7. fprintf(stderr, "caught signo: %d\n", signo);
  8. }
  9. int main(void)
  10. {
  11. int count = 0;
  12. struct sigaction siga;
  13. static sigset_t sigset;
  14. sigfillset(&sigset);
  15. siga.sa_handler = test_handler;
  16. siga.sa_mask = sigset;
  17. siga.sa_flags = 0;
  18. if (0 != sigaction(SIGCHLD, &siga, (struct sigaction *)NULL)) {
  19. fprintf(stderr, "ack!");
  20. }
  21. printf("give me a SIGCHLD\n");
  22. for(;;) {
  23. sleep(10);
  24. printf("after sleep %d\n", ++count);
  25. }
  26. printf("after loop\n");
  27. return 0;
  28. }