Given code:
//Include necessary header files
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <wait.h>
#include <signal.h>
#include "csapp.h"
//Initialize the global counter variable as 2
volatile long counter = 2;
//Define a function named handler1()
void handler1(int sig)
{
//Variable declaration
sigset_t mask, prev_mask;
//Call the function sigfillset()
sigfillset(&mask);
//Call the function sigprocmask() and block sigs
sigprocmask(SIG_BLOCK, &mask, &prev_mask);
//Call the function sio_putl()
sio_putl(--counter);
//Call the function sigprocmask() and restore sigs
sigprocmask(SIG_SETMASK, &prev_mask, NULL);
//Exit
_exit(0);
}
//Define a function named main()
int main()
{
//Variable declaration
pid_t pid;
sigset_t mask, prev_mask;
//Print the counter value
printf("%ld ", counter);
//Flush the output buffer using fflush()
fflush(stdout);
//Call the function signal()
signal(SIGUSR1, handler1);
//Check the condition
if ((pid = Fork()) == 0)
{
//True, execute the statement
while(1) {};
}
//Call the function kill()
Kill(pid, SIGUSR1);
//Call the function waitpid()
Waitpid(-1, NULL, 0);
//Call the function Sigfillset()
Sigfillset(&mask);
//Call the function sigprocmask() and block sigs
Sigprocmask(SIG_BLOCK, &mask, &prev_mask);
//Print the counter value
printf("%ld", ++counter);
//Call the function sigprocmask() and restore sigs
Sigprocmask(SIG_SETMASK, &prev_mask, NULL);
//Exit
exit(0);
}
Want to see the full answer?
Check out a sample textbook solutionChapter 8 Solutions
EBK COMPUTER SYSTEMS
- Computer Networking: A Top-Down Approach (7th Edi...Computer EngineeringISBN:9780133594140Author:James Kurose, Keith RossPublisher:PEARSONComputer Organization and Design MIPS Edition, Fi...Computer EngineeringISBN:9780124077263Author:David A. Patterson, John L. HennessyPublisher:Elsevier ScienceNetwork+ Guide to Networks (MindTap Course List)Computer EngineeringISBN:9781337569330Author:Jill West, Tamara Dean, Jean AndrewsPublisher:Cengage Learning
- Concepts of Database ManagementComputer EngineeringISBN:9781337093422Author:Joy L. Starks, Philip J. Pratt, Mary Z. LastPublisher:Cengage LearningPrelude to ProgrammingComputer EngineeringISBN:9780133750423Author:VENIT, StewartPublisher:Pearson EducationSc Business Data Communications and Networking, T...Computer EngineeringISBN:9781119368830Author:FITZGERALDPublisher:WILEY