C program for Parent process registering for SIGCHLD signal and waits in the signal handler for Child process to die
#include
<stdio.h>
#include
<signal.h>
#include
<unistd.h>
#include
<sys/types.h>
#include
<sys/wait.h>
#include
<stdlib.h>
void
handler(int sig)
{
  pid_t pid;
  pid = wait(NULL);
  printf("Pid %d exited. Signal
caught\n", pid);
}
int
main(void)
{
  signal(SIGCHLD, handler);
  if(!fork())
  {
    printf("\n Child pid is %d\n",
getpid());
    printf("\n child exited\n");
    exit(0);
  }
  printf("Parent pid is %d\n",
getpid());
  getchar();
  return 0;
}
Output:
Parent
pid is 2249
Child pid is 2250
child exited
Pid
2250 exited. Signal caught