Сиггация против сигнала

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

1 ответ

Я знаю немного о sigaction а также signal, Но я знаю следующее:

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

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

Другие вопросы по тегам