Sigaction против сигнала

Может кто-нибудь объяснить разницу между sigaction и signal. Я знаю, что сигнализация работает по-разному в зависимости от того, на какой машине вы работаете, т. е. на Mac, Windows или Linux, и что sigaction работает одинаково на всех платформах. Но мой вопрос в том, почему это так, потому что я пытался использовать сигнал на разных платформах и получил тот же результат. Также какой из них вы, ребята, порекомендовали бы использовать для лучшей практики.


person divyanshch    schedule 05.06.2015    source источник
comment
Возможный дубликат В чем разница между sigaction и signal?   -  person pilcrow    schedule 03.05.2016


Ответы (1)


Я мало что знаю о sigaction и signal. Но то, что я знаю, это то, что:

  • Вызов sigaction более сложен в использовании, чем вызов signal (как вы уже знаете).
  • sigactionпозволяет получить дополнительную информацию о сигнале, полученном вашей программой (см. структуру siginfo_t).
  • Согласно книге Майкла КЕРРИСКа: "Интерфейс программирования Linux" (гл. 22, стр. 456): "... рекомендуется всегда использовать sigaction, а не чем signal для установки обработчиков сигналов."
  • Наконец (снова из книги Майкла КЕРРИСКА): «Ядро Linux содержит реализацию signal в качестве системного вызова, эта реализация обеспечивает более старую, ненадежную семантику. Однако glibc обходит этот системный вызов, предоставляя функцию библиотеки сигналов, которая вызывает sigaction».

Надеюсь, поможет.

person sashaVR    schedule 05.06.2015