static int flag=0;
void myself()
{
flag=1;
printf("get signal SIGALRM\n");
}
main ()
{
flag=2;
signal(SIGALRM,myself);
alarm(50);
while(1)
{
sleep(1);
if(flag==1)
exit(0);
if(flag==2)
printf("wait for interrupt\n");
}
}作者: booklijian 时间: 2005-12-15 19:30 标题: 存在这个问题吗? 我用你的代码在红帽9下试了一下,没有发现这个问题。如果存在问题的话,我想是否是你调试的源代码里面printf语句末尾没有加上 "\n"而在上面的源代码中添加了?我调试的部分显示结果如下:
(gdb) s
25 printf("wait for interrupt\n");
(gdb) s
wait for interrupt
21 sleep(1);
(gdb) s
s
s
22 if(flag==1)
(gdb) s
24 if(flag==2)
(gdb) s
25 printf("wait for interrupt\n");
(gdb) s
wait for interrupt
21 sleep(1);
(gdb) s
s
s22 if(flag==1)
(gdb) s
24 if(flag==2)
(gdb) s
25 printf("wait for interrupt\n");
(gdb) s
wait for interrupt
21 sleep(1);