我正在使用 C 语言工作。我试图捕捉和处理两个不同的信号:
- INT:当捕捉到这个信号时,触发action1或action2
- QUIT:当这个信号被捕获时,INT信号动作被切换(action1 -> action2 or action2 -> action1)
默认 INT 信号操作设置为action1。
在我的代码中,switchaction函数由 QUIT 信号很好地触发,但对 INT 信号操作没有影响:s
#include <signal.h>
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
typedef void (*sighandler_t)(int);
sighandler_t prev_handler;
void action1(int n){
printf("First message\n");
}
void action2(int n){
printf("Second message\n");
}
void switchaction(int n){
printf("Switch action\n");
prev_handler=action2;
}
int main() {
prev_handler = action1;
printf("PID: %d\n", getpid());
prev_handler= signal(SIGINT,prev_handler);
signal(SIGQUIT,switchaction);
travail(); //This function never ends
}
你知道我的代码有什么问题吗?
谢谢,
扬