Мне нужно отправить два сигнала процессу, 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
?