初学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次实验发现没有输出,怎么回事呢?
谢谢! kill -l |grep SIGUSR1
kill -10 pid 回复 2# cxytz01
gdb调试的时候打印x的值的确是10
但就是有问题。。。
应该是没有刷新缓冲区。把这一句
printf("now sig_usr(%d)",x); 改为
printf("now sig_usr(%d)\n",x);\\加了一个\n
再试试。 回复 4# damonxu
:em02: 嗯,是的。谢谢你啊!
终端输出时行 缓冲的
页:
[1]