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

linux信号小例子
#include <signal.h> 
#include <stdio.h> 
#include <string.h> 
#include <errno.h> 
#include <unistd.h>
#include<stdlib.h> 
#define PROMPT "你想终止程序吗?" 
char *prompt=PROMPT; 
void ctrl_c_op(int signo) 

 write(STDERR_FILENO,prompt,strlen(prompt)); 

void ctrl_c_ip()
 {
  write(STDERR_FILENO,"信号2",strlen("信号2"));
 }
int main() 

 struct sigaction act; 
 act.sa_handler=ctrl_c_op; 
 sigemptyset(&act.sa_mask); 
 act.sa_flags=0;
 sigaddset(&act.sa_mask,SIGUSR1);
 sigaddset(&act.sa_mask,SIGUSR2); 
 if(sigaction(SIGUSR1,&act,NULL)<0) 
 { 
  fprintf(stderr,"Install Signal Action Error:%s\n\a",strerror(errno)); 
  exit(1); 
 }
 else
  act.sa_handler=ctrl_c_op;
 if(sigaction(SIGUSR2,&act,NULL)<0)
 {
  fprintf(stderr,"Install Signal Action Error:%s\n",strerror(errno));
 } 
 else
  act.sa_handler=ctrl_c_ip;
 while(1); 
}
以上是我写的一个关于信号的实例 我想实现该程序可以根据不同的信号 做出不同的反应 可是当我产生不同的信号时 该程序的输出结果始终是一样的  错在什么地方呢?能帮我改一下吗?
拜托了

------解决方案--------------------
信号处理函数只能有一个,在里面判断各个信号的值。