Отключить обработчик sigaction - PullRequest
0 голосов
/ 06 декабря 2011

Я успешно подключил функцию-обработчик к SIG_INT и SIG_KILL, но теперь я хотел бы иметь возможность «отсоединить» обработчик в определенной точке (если быть точным после разветвления).Вот как я прикрепляю обработчик:

struct sigaction sa;
sa.sa_handler = interrupt_handler;
sigempty(&sa.sa_mask);
sa.sa_flags = SA_SIGINFO;

sigaction(SIG_INT, &sa, NULL);
sigaction(SIG_KILL, &sa, NULL);

interrupt_handler только что-то печатает.

1 Ответ

4 голосов
/ 06 декабря 2011

Возможно, вы хотите восстановить предыдущее расположение:

struct sigaction sa, oldsa;

/* Change it but save previous state. */
sigaction(SIG_INT, &sa, &oldsa);

/* ... */

/* Restore previous stuff. */
sigaction(SIG_INT, &oldsa, NULL);
...