2015-09-16 2 views
3

Функция сигнала возвращает значение старого обработчика, но какова ситуация, когда значение старого обработчика может быть полезным, потому что большинство мест мы не проверяем возвращаемое значение сигнальной функции.Что такое использование возвращаемого типа сигнальной функции

ответ

5

Есть две ситуации, когда значение старого обработчика полезно:

  • Вы хотите реализовать новый обработчик, который вызывает старый обработчик в какой-то момент во время своего бега, или
  • Вы хотите замените старый обработчик на новый и верните старый в какой-то момент.

В обоих случаях вы храните старый обработчик, возвращаемый функцией замены.

+0

спасибо за ваш ans, но можете ли вы привести пример, где мы хотим назвать старого обработчика, я имею в виду, в каком состоянии мы хотели бы снова вызвать старого обработчика? –

+0

@pankajkushwaha [Этот ответ] (http://stackoverflow.com/a/13290134/335858) содержит очень подробный пример кода, также объясняющий, как обращаться с 'SIG_DFL' и' SIG_IGN'. – dasblinkenlight

+1

Одним из примеров того, почему вам нужно подключить обработчики сигналов, является код JNI, который необходимо очистить от аномального завершения JVM. Для этого вы должны установить собственный обработчик SIGABRT и сохранить исходный обработчик - это обработчик SIGABRT JVM. Когда ваш обработчик SIGABRT вызывается, потому что JVM заканчивается ненормально, вы выполняете очистку, а затем вызываете оригинального обработчика SIGABRT. –

Смежные вопросы