读书人

关于信号~该怎么处理

发布时间: 2012-09-05 15:19:35 作者: rapoo

关于信号~

C/C++ code
  1 #include<stdio.h>  2 #include<signal.h>  3   4 void task(int signo){  5     printf("收到%d信号\n",signo);  6 }  7   8 int main()  9 { 10     printf("fork()\n"); 11     pid_t pid=fork(); 12     if(pid==0){ 13         sleep(1); 14         signal(50,task); 15     }    16     kill(pid,50); 17     sleep(3); 18 }

为什么接受不到信号呢

[解决办法]
1 #include<stdio.h>
2 #include<signal.h>
3
4 void task(int signo){
5 printf("收到%d信号\n",signo);
6 }
7
8 int main()
9 {
10 printf("fork()\n");
11 pid_t pid=fork();
12 if(pid==0){
13 sleep(1);
14 signal(50,task);
15 }
sleep(2);

16 kill(pid,50);
17 sleep(3);
18 }

[解决办法]
子线程有sleep,主线程没有。
主线程都发出信号了之后,子线程才注册信号处理函数。

读书人网 >C++

热点推荐