Search code examples
cfork

How to kill child of fork?


I have the following code which create a child fork. And I want to kill the child before it finish its execution in the parent. how to do it?

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int i;

main (int ac, char **av)
{
  int pid;

  i = 1;

  if ((pid = fork()) == 0) {
    /* child */
    while (1) {
      printf ("I m child\n");
      sleep (1);
    }
  }
  else {
    /* Error */
    perror ("fork");
    exit (1);
  }
  sleep (10)

   // TODO here: how to add code to kill child??

}

Solution

  • Send a signal.

    #include <sys/types.h>
    #include <signal.h>
    
    kill(pid, SIGKILL);
    
    /* or */
    
    kill(pid, SIGTERM);
    

    The second form preferable, among other, if you'll handle signals by yourself.