当前位置: 技术问答>linux和unix
关于signal函数使用的问题
来源: 互联网 发布时间:2016-02-25
本文导语: 代码如下: #include #include #include #include #include int main() { int p1, p2,i,sonpid; p1 = 3; p2 = 8; sonpid = fork(); if(sonpid == 0) { ...
代码如下:
#include
#include
#include
#include
#include
int main()
{
int p1, p2,i,sonpid;
p1 = 3;
p2 = 8;
sonpid = fork();
if(sonpid == 0)
{
signal(SIGUSR1,killson);
while(loop == 0)
{
printf("p1 = %dn", p1);
}
}
signal(SIGUSR1,sigkill);
while(loop == 0)
{
printf("p2 = [%d]n", p2);
kill( sonpid , SIGUSR1 );
break;
}
return 0;
}
void killson()
{
loop = 1;
printf("111111111n");
}
void sigkill()
{
loop = 1;
printf("222222222n");
alarm
}
输出结果如下:
3
3
3
[8]
3
3
3
[8]
3
3
3
1111 3
怎么会是这样的结果,那位高人解释一下啊。小弟先谢谢了!
#include
#include
#include
#include
#include
int main()
{
int p1, p2,i,sonpid;
p1 = 3;
p2 = 8;
sonpid = fork();
if(sonpid == 0)
{
signal(SIGUSR1,killson);
while(loop == 0)
{
printf("p1 = %dn", p1);
}
}
signal(SIGUSR1,sigkill);
while(loop == 0)
{
printf("p2 = [%d]n", p2);
kill( sonpid , SIGUSR1 );
break;
}
return 0;
}
void killson()
{
loop = 1;
printf("111111111n");
}
void sigkill()
{
loop = 1;
printf("222222222n");
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的值不同而已.你按这流程想一遍就通了.
对此程序来说,你只要明白一点:sonpid = fork(); 从此处开始后即是两个进程了,唯一的区别就是在两个进程内sonpid的值不同而已.你按这流程想一遍就通了.