首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于信号~该怎么处理

2012-09-05 
关于信号~C/C++ code1 #includestdio.h2 #includesignal.h34 void task(int signo){5printf(收到%d信

关于信号~

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>

4 void task(int signo){
5 printf("收到%d信号\n",signo);
6 }

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,主线程没有。
主线程都发出信号了之后,子线程才注册信号处理函数。

热点排行