首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

APUE2 10.12小节中所给的Figure 10.14程序是不是错了?该如何解决

2013-01-25 
APUE2 10.12小节中所给的Figure 10.14程序是不是错了?APUE2 10.12小节中所给的Figure 10.14程序中,对 sigi

APUE2 10.12小节中所给的Figure 10.14程序是不是错了?
APUE2 10.12小节中所给的Figure 10.14程序中,对 sigismember() 函数的用法是这样的:
        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 ");

这样判断应该是不是有问题?
sigismember()函数的返回值是:如果信号存在于所给信号集中,返回1,如果不存在,返回0,如果出错,返回 -1。
那么返回 -1 的时候,if (sigismember(&sigset, SIGINT))  也是为真的,因为C语言中,0 是假,非0为真,-1也是真。
我觉得这样判断是有问题的,但是我找了APUE2, APUE2的勘误表,发现没有提到过这个错误。这应该很好发现的的一个错,难道是我理解有误?
[解决办法]
APUE2 10.12小节中所给的Figure 10.14程序是不是错了?该如何解决

热点排行