Write a C program in Linux to implement the following functionalities

Question:

Write a C program in Linux to implement the following functionalities
Declare a global variable usr_interrupt=1
Write a signal handler function
void reset_signalvaluezero ()
When a SIGALRM signal arrives this function will be called in which variable will be set
sig_atomic_t usr_interrupt = 0;
Write a signal handler function
void Increment_signalvalue ()
When a SIGINT signal arrives this function will be called in which variable will be incremented the usr_interrupt by 1.
Write the main function
int main (void)
Handle two Signals SIGALRM and SIGINT.
Set the alarm for 10 sec
The parent process will sit in the tight loop by keeping a check on usr_interrupt variable once this variable will be 5 parent process will print some ENDING message and will exit.

Answer:

#include<stdio.h>
#include<signal.h>
#include<unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

sig_atomic_t usr_interrupt = 1;

void reset_signalvaluezero(int signo)
{
if (signo == SIGALRM)
    usr_interrupt = 0;
}

void Increment_signalvalue(int signo)
{
if (signo == SIGINT)
    usr_interrupt++;
}

int main(void)
{
if (signal(SIGINT, Increment_signalvalue) == SIG_ERR)
      printf("\ncan't catch SIGINT\n");
if (signal(SIGALRM, reset_signalvaluezero) == SIG_ERR)
      printf("\ncan't catch SIGALRM\n");
  

alarm(10);
  
  
while(1)
{
    if (usr_interrupt >= 5)
    {
        printf ("Exiting...");
        return 0;
    }
}
  
return 0;
}
Click to Rate This Answer!
[Total: 0 Average: 0]

Leave a Comment

Your email address will not be published. Required fields are marked *