当前位置:  技术问答>linux和unix

APUE2 10.12小节中所给的Figure 10.14程序是不是错了?

    来源: 互联网  发布时间:2017-03-18

    本文导语:  APUE2 10.12小节中所给的Figure 10.14程序中,对 sigismember() 函数的用法是这样的:         printf("%s", str); if (sigismember(&sigset, SIGINT))   printf("SIGINT "); if (sigismember(&sigset, SIGQUIT))  printf("SIGQUIT "); if (sigismember(&...

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的勘误表,发现没有提到过这个错误。这应该很好发现的的一个错,难道是我理解有误?

|

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于apue2 中一个例子的提问
  • 不同缓冲区长度读操作 APUE2e


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3