hitcser01 发表于 2013-04-23 22:36

初学signal()函数的问题

#include"apue.h"

static void sig_usr(int x)
{
        if(x==SIGUSR1){
                printf("now sig_usr(%d)",x);
        }
}

int main(void)
{
        if( SIG_ERR == signal(SIGUSR1,sig_usr) ){
                printf("can't catch USR1\n");
        }
        for( ; ; ){
                pause();
        }
        return 0;
}cc -o -Wall test test.c
./test
kill -USR1
重复N次实验发现没有输出,怎么回事呢?

谢谢!

cxytz01 发表于 2013-04-24 09:00

kill -l |grep SIGUSR1

kill -10 pid

hitcser01 发表于 2013-04-24 19:58

回复 2# cxytz01
gdb调试的时候打印x的值的确是10
但就是有问题。。。


   

damonxu 发表于 2013-04-25 22:54

应该是没有刷新缓冲区。把这一句
printf("now sig_usr(%d)",x); 改为
printf("now sig_usr(%d)\n",x);\\加了一个\n
再试试。

hitcser01 发表于 2013-04-26 15:48

回复 4# damonxu

:em02: 嗯,是的。谢谢你啊!

   

zwjzwj19891228 发表于 2013-04-27 10:54

终端输出时行 缓冲的
页: [1]
查看完整版本: 初学signal()函数的问题