- 论坛徽章:
- 0
|
本帖最后由 kgn28 于 2010-07-02 18:03 编辑
回复 1# kris_fei
sleep随便发一个信号都会导致睡眠的终止吧,如果你想程序不退出,就修改默认的信号处理函数(大部分都是终止),或者选择默认忽略的信号(查了一下,好像SIGWINCH是忽略),或者你随便改一个就可以了吧:
void sig_action(){}
signal(SIGINT, sig_action)
然后发SIGINT
不知道我想的有何纰漏?
sleep 10000
然后kill -SIGWINCH 2895没反应
kill -SIGINT 2895,sleep退出。
这个程序你发sigint,就不会退出了。- #include <unistd.h>
- #include <signal.h>
- #include <stdio.h>
- static void sig_action(){}
- int main()
- {
- int val;
- signal(SIGINT, sig_action);
- for(;;){
- val = sleep(100000);
- printf("val:%d\n",val);
- }
- return 0;
- }
复制代码 只不过signal这个函数的实现依赖系统,在POSIX中是不可靠的,可以考虑使用sigaction函数代替。 |
|