日期:2014-05-16  浏览次数:20743 次

看看这个通信的例子
#include<stdio.h>
#include<signal.h>
#include<stdlib.h>

main(){
  int pid,i;
  void list(){
  for(i='a';i<='z';i++)
  { 
  putchar(i);
  ]
  }
  //----------------------------
  while((pid=fork())==-1);
  if(pid==0){
  signal(17,list); //接收信号17,执行list函数
  exit(0);
  }else{
  kill(pid,17); //将17信号发送给pid
  wait(0);
  exit(0);
  }
}

执行后什么也没有输出,我也不知道是哪里出问题了,可能信号没接受到就结束了


------解决方案--------------------
你猜对了,子进程很快结束了

加一句
if(pid==0){
signal(17,list); //接收信号17,执行list函数
pause();
exit(0);

另外,最好把signal(17,list); 放在fork()之前
以免子进程还没执行signal,父进程就发送了信号