csapp ch8.8 练习题 需要重做

这一道从头看到尾,完全不知道说什么的题目
csapp ch8.8 练习题 需要重做_第1张图片
csapp ch8.8 练习题 需要重做_第2张图片
csapp ch8.8 练习题 需要重做_第3张图片
代码

#include 
#include 
#include 
#include 
#include 
#include "csapp.h"

/* $begin signalprob0 */
volatile long counter = 2;

void handler1(int sig)
{
    sigset_t mask, prev_mask;

    Sigfillset(&mask);
    Sigprocmask(SIG_BLOCK, &mask, &prev_mask);  /* Block sigs */
    Sio_putl(--counter);
    Sigprocmask(SIG_SETMASK, &prev_mask, NULL); /* Restore sigs */

    _exit(0);
}

int main()
{
    pid_t pid;
    sigset_t mask, prev_mask;

    printf("%ld", counter);
    fflush(stdout);

    signal(SIGUSR1, handler1);
    if ((pid = Fork()) == 0) {
        while(1) {};
    }
    Kill(pid, SIGUSR1);
    Waitpid(-1, NULL, 0);

    Sigfillset(&mask);
    Sigprocmask(SIG_BLOCK, &mask, &prev_mask);  /* Block sigs */
    printf("%ld", ++counter);
    Sigprocmask(SIG_SETMASK, &prev_mask, NULL); /* Restore sigs */

    exit(0);
}
/* $end signalprob0 */

运行结果
csapp ch8.8 练习题 需要重做_第4张图片
答案
在这里插入图片描述

你可能感兴趣的:(csapp ch8.8 练习题 需要重做)