首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

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

2012-03-15 
关于signal函数使用的问题代码如下:#includestdio.h#includestdlib.h#includestring.h#include cur

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


热点排行