读书人

关于signal函数使用的有关问题

发布时间: 2012-03-15 11:50:38 作者: rapoo

关于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的值不同而已.你按这流程想一遍就通了.


读书人网 >UNIXLINUX

热点推荐