0
votes
    #include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>

static void sigusr(int iSig)   //SIGUSER are the user defined signals
  {
        if (iSig == SIGUSR1)
        {
                printf("Received SIGUSR1 signal, going to sleep for 2 seconds\n");
                sleep(2);
                
        }
  }
int main ()
  {
        int pid;
        signal(SIGUSR1, sigusr);
        pid = fork();
        if (pid > 0)   //Parent process created
        {
                for(int i=0; i<=1000;i++)
                {
                        printf("%d\n",i);
                    usleep(70);
                }
        }
        else           //Child process created
        {
                sleep(5);
                kill(pid,SIGUSR1);
                exit(0);
        }
   }

Create 2 processes, a parent and a child using fork(). The parent prints the value of ‘i’ from 0 to 1000 and then exits. Meanwhile the child process sleeps for 5 seconds after it is created, sends a SIGUSR1 signal to the parent and then exits.
The parent should catch that signal, print on standard output “Received SIGUSR1 signal, going to sleep for 2 seconds”, sleep for two seconds and then continueprinting the numbers. But i am unable to continue the process after child process termination.