Законные причины для перехвата, внутренней обработки и игнорирования программой сигнала SIGINT

К сожалению, sendmailи mailxне позволяют указать другой SMTP-сервер. Но вы можете совместить ответ Анджея с ssh. Хотя я буду использовать опцию -tдля чтения получателей из читаемого файла/данных.

cat <messagefile> | ssh user@mailhost /usr/sbin/sendmail -i -t

<messagefile>— это файл, содержащий сообщение MIME, а mailhost — это SMTP-сервер. user— это идентификатор входа на SMTP-сервер.

2
05.03.2019, 20:32
1 ответ

Как вы обнаружили, наиболее вероятной причиной того, что программа игнорирует SIGINT, является ошибка. Программы с хорошим -поведением должны уважать сигналы, и обычно SIGINT означает «пожалуйста, выйдите», но это не обязательное поведение. Программа имеет полное право использовать SIGINT в своих целях. В том же ключе SIGHUP используется многими демонами программ (, обычно )для обозначения «перезагрузки файлов конфигурации» вместо «ваш управляющий терминал завис».

  • Длительно работающая -программа или демон могут использовать SIGINT для обозначения «прервать текущую вещь, над которой я работаю, и перейти к следующей задаче».
  • Программа, ожидающая события, может использовать SIGINT для обозначения «прекратить ожидание [события] и продолжить работу» (. SIGTERM предположительно означает альтернативу «прекратить ожидание [события] и завершить работу» ).
  • Сигналы часто отправляются нескольким процессам; если у программы есть основания полагать, что это был не предполагаемый получатель, она может проигнорировать это.
  • Программа может (правильно или неправильно )полагать, что она знает лучше вас, и просто игнорировать прерывания и другие необязательные сигналы, чтобы продолжать то, над чем она работает; критическая задача, такая как процесс восстановления диска -, может разумно игнорировать запрос пользователя на остановку части -, например.

Конечно, вопрос о том, должна ли программа обрабатывать SIGINT по-разному, по этим или другим причинам, является спорным. Вероятно, это удивит или смутит таких пользователей, как вы, которые ожидают, что программа завершит работу достаточно быстро. Таким образом, хорошо работающая -программа, рассматривающая возможность обработки SIGINT необычным способом, должна гарантировать, что такое поведение будет иметь смысл в контексте (большинства )пользователей.

В этой статье (, связанной с Википедией ), подробно рассказывается о SIGINT и правильной обработке, а также обсуждается ряд крайних -случаев, которые стоит учитывать при реализации обработки SIGINT.

2
11.05.2020, 07:15

Теги

Похожие вопросы