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