无限循环的linux退出,sigaction函数为什么会使得小弟我的无限循环退出? 很奇怪的有关问题...

sigaction函数为什么会使得我的无限循环退出? 很奇怪的问题

本帖最后由 sedrack 于 2015-04-28 18:56:53 编辑

我有如下的小程序,来自于网上:

#include

#include

#include

#include

#include

#include

#include

#include

#include

void handler(int sig)

{

printf("rev sig=%d\n", sig);

}

int main(int argc, char *argv[])

{

struct sigaction act;

act.sa_handler = handler;

sigemptyset(&act.sa_mask);

act.sa_flags = 0;

sigaction(SIGINT, &act, NULL);

for (; ;)

pause();

return 0;

}

我期待的是,程序运行时,我如果发送1号信号给它,那么它调用handler打印一条语句,继续pause,等待我再次发送信号给它,如此循环。

但是实际的运行结果是:

x@a-VirtualBox:~$ ps -ef|grep a.out

x         7912  6819  0 18:52 pts/1    00:00:00 ./a.out

x         7914  7648  0 18:52 pts/17   00:00:00 grep --color=auto a.out

x@a-VirtualBox:~$ kill -1 7912

然后./a.out就退出了。

x@a-VirtualBox:~$ ./a.out

Hangup这是为什么呢? 我的理解某个地方有错?

------解决思路----------------------

你注册的是SIGINT信号,而你发的是1是SIGHUP信号,SIGHUP信号默认是程序退出。

# kill -l

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP

6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1

11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM

16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP

21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ

26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR

31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3

38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8

43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7

58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2

63) SIGRTMAX-1  64) SIGRTMAX

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值