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);
}
以上是我写的一个关于信号的实例 我想实现该程序可以根据不同的信号 做出不同的反应 可是当我产生不同的信号时 该程序的输出结果始终是一样的 错在什么地方呢?能帮我改一下吗?
拜托了
[解决办法]
信号处理函数只能有一个,在里面判断各个信号的值。