Computer Systems: A Programmer's Perspective (3rd Edition)
Computer Systems: A Programmer's Perspective (3rd Edition)
3rd Edition
ISBN: 9780134092997
Author: Bryant
Publisher: PEARSON
Question
Book Icon
Chapter 8.5, Problem 8.8PP
Program Plan Intro

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);

}

Blurred answer
Students have asked these similar questions
Problem 3 (#2.1.32).Explain why (A×B)×(C×D)and A×(B×C)×D are not the same
PROBLEM 12. [TIME ALLOWED = 5 MINUTES]   Give the contrapositive and converse of the following proposition:   “If it is sunny, then I will go swimming.”
Problem 9
Knowledge Booster
Background pattern image
Similar questions
SEE MORE QUESTIONS
Recommended textbooks for you
Text book image
C++ for Engineers and Scientists
Computer Science
ISBN:9781133187844
Author:Bronson, Gary J.
Publisher:Course Technology Ptr