linux - APUE里面第10章,关于信号的这段代码不理解。请指教
怪我咯
怪我咯 2017-04-17 16:32:47
0
1
670

在10.6节的可冲入函数段落中,有一段示例程序,这段程序从信号处理函数中调用非可重入函数getpwnam
每一秒my_alarm都会被调用一次。

#include #include #include "apue.h" static void my_alarm(int signo) { struct passwd *rootptr; printf("IN signal handler\n"); if((rootptr = getpwnam("root")) == NULL) err_sys("getpwnam(root) error"); alarm(1); } int main(void) { struct passwd *ptr; signal(SIGALRM,my_alarm); alarm(1); for(;;) { if((ptr = getpwnam("sar")) == NULL) err_sys("getpwnam error"); if(strcmp(ptr->pw_name,"sar") != 0) printf("return value corrupted,pw_name = %s\n",ptr->pw_name); } }

但是当我运行出来之后,显示:getpwnam error: Success

我想知道这个Success在哪里出来的呢。代码里面没有看到。而且,不是说每隔一秒就会调用一次吗,但是程序运行一次就结束了。

怪我咯
怪我咯

走同样的路,发现不同的人生

reply all (1)
巴扎黑
  1. Your machine did notsar这个用户。所以程序会执行err_sys("getpwnam error");。然后err_sys最后会执行exit(1)exit.

  2. Because Shenma has Success, you can trace the implementation of apue error handling.

    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!