关于signal函数使用的问题
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <curses.h>
#include <signal.h>
int main()
{
int p1, p2,i,sonpid;
p1 = 3;
p2 = 8;
sonpid = fork();
if(sonpid == 0)
{
signal(SIGUSR1,killson);
while(loop == 0)
{
printf("p1 = %d\n", p1);
}
}
signal(SIGUSR1,sigkill);
while(loop == 0)
{
printf("p2 = [%d]\n", p2);
kill( sonpid , SIGUSR1 );
break;
}
return 0;
}
void killson()
{
loop = 1;
printf("111111111\n");
}
void sigkill()
{
loop = 1;
printf("222222222\n");
alarm
}
输出结果如下:
3
3
3
[8]
3
3
3
[8]
3
3
3
1111 3
怎么会是这样的结果,那位高人解释一下啊。小弟先谢谢了!
------解决方案--------------------signal()
第二个参数取地址。
------解决方案--------------------loop在哪定义的?
------解决方案--------------------loop是全局变量
两个函数还要声明
哎
------解决方案-------------------- signal(SIGUSR1,killson); 简单的说就是把这个信号和函数关联起来,SIGUSR1信号到来时,指向killson函数.
对此程序来说,你只要明白一点:sonpid = fork(); 从此处开始后即是两个进程了,唯一的区别就是在两个进程内sonpid的值不同而已.你按这流程想一遍就通了.