红联Linux门户
Linux帮助

APUE习题求解答

发布时间:2013-07-12 10:27:42来源:红联作者:yuemotu
apue第十章第九题
#include "apue.h"
#include

void
pr_mask(const char *str)
{
sigset_t sigset;
int errno_save;

errno_save = errno; /* we can be called by signal handlers */
if (sigprocmask(0, NULL, &sigset) < 0)
err_sys("sigprocmask error");

printf("%s", str);
if (sigismember(&sigset, SIGINT)) printf("SIGINT ");
if (sigismember(&sigset, SIGQUIT)) printf("SIGQUIT ");
if (sigismember(&sigset, SIGUSR1)) printf("SIGUSR1 ");
if (sigismember(&sigset, SIGALRM)) printf("SIGALRM ");

/* remaining signals can go here */

printf("\n");
errno = errno_save;
}
重写上边程序,要求能处理所有信号量,每次循环处理当前信号屏蔽字中的一个信号量(并不是对每一个可能的信号量都循环一次)。
文章评论

共有 2 条评论

  1. 于 2013-07-12 13:52:44发表:

    顶!

  2. yuemotu 于 2013-07-12 10:59:20发表:

    这个题什么意思呀?思路呢?