Я использую:Удаление обработчика сигнала C (Linux)
signal(SIGINT, CtrlHandler);
Чтобы добавить обработчик события SIGINT
. Но как я могу удалить этот обработчик?
Я использую:Удаление обработчика сигнала C (Linux)
signal(SIGINT, CtrlHandler);
Чтобы добавить обработчик события SIGINT
. Но как я могу удалить этот обработчик?
Вот что вы делаете:
signal(SIGINT, SIG_DFL);
Это сбрасывает обработчик сигнала обратно в какое-либо поведение по умолчанию был для этого сигнала. В случае SIGINT он прерывает ваш процесс без основного дампа.
The manual for signal
объясняет, почему это работает:
signal(signum, handler)
задает расположение сигналаsignum
кhandler
, который является либоSIG_IGN
,SIG_DFL
, или адрес программиста определенных функций (а «обработчик сигнала») , ... Если уставка установлена наSIG_DFL
, то происходит действие по умолчанию, связанное с сигналом.
Вы также можете найти эту информацию, используя команду man
. Если вы наберете man signal
в командной строке и прочитаете, вы должны это увидеть.
@jameshfisher - Спасибо за редактирование. Иногда меня расстраивают люди, которые не читают руководство. :-) – Omnifarious