当前位置: 技术问答>linux和unix
在信号处理程序中调用不可重入函数的疑问
来源: 互联网 发布时间:2017-05-06
本文导语: #include "apue.h" #include static void my_alarm(int signo) { struct passwd *rootptr; printf("in signal handlern"); if ((rootptr = getpwnam("root")) == NULL) err_sys("getpwnam(root) error"); alarm(1); } int main(void) { struct passwd *ptr; signal(SIGALRM, my_alarm); al...
#include "apue.h"
#include
static void
my_alarm(int signo)
{
struct passwd *rootptr;
printf("in signal handlern");
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 = %sn",
ptr->pw_name);
}
}
执行结构是getpwnam error:Success
哪位大哥可以告诉我一下这个程序是怎么一回事?怎么会是这个结果?谢谢啦
|
在写信号处理函数时不要调用非信号安全的函数。