Я работаю на языке C. Я пытаюсь поймать и обработать два различных сигнала:Сделать сигнальный переключатель действием другого сигнала
- INT: когда этот сигнал ловится, действие1 или action2 срабатывает
- QUIT: когда этот сигнал ловится, действие сигнала INT является включен (действие1 ->действие2 или действие2 ->действие1)
Значение сигнала по умолчанию 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
}
Вы бы иметь ни малейшего представления о том, что неправильно в моем коде?
Спасибо,
Yann
BTW, вы не работаете в C, а в C и Posix (или C и Linux) –