Мне нужно отправить два сигнала процессу, SIGUSR1
и SIGUSR2
, чтобы изменить конкретную логическую переменную в программе (SIGUSR1
устанавливает для нее true , SIGUSR2
устанавливает значение false ). Поэтому я написал signalHandler()
функцию для управления поведением SIGUSR1
или SIGUSR2
. Проблема заключается в следующем: как настроить sigaction()
для выполнения этой конкретной задачи? Я провел много времени в Google, я везде читал, что я должен использовать sigaction()
вместо устаревшего signal()
. На странице справки я нашел это
int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);
в signum я должен указать тип сигнала, который я хочу обработать, тогда у меня есть параметр struct sigaction:
struct sigaction {
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void *);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
};
в первом поле я подумал, что должен установить имя моего обработчика сигналов, но я не знаю, как я могу установить другие поля.
Наконец, какая польза от: struct sigaction *oldact
?