Почему есть только два пользовательских сигнала?

11

В списке сигналов, определенных в системе Linux, есть два сигнала, указанные как сигналы, определенные пользователем ( SIGUSR1и SIGUSR2). Другие сигналы будут подняты или перехвачены в определенных ситуациях, но SIGUSR оставлены для использования пользовательским приложением.

Так почему только два сигнала?

saeedn
источник

Ответы:

13

Исторически, Unix были только эти два сигнала, но современные системы имеют в реальном масштабе времени сигналы SIGRTMIN... SIGRTMAX.

Из-за дурацкой и непереносимой семантики API сигналов почти не существует случая, когда сигналы были бы предпочтительнее других механизмов связи, таких как каналы. Поэтому выделение нового номера сигнала никогда не рассматривалось как необходимое.

CL.
источник
Спасибо. В моем случае я использую SIGUSR1 для перенастройки. Это означает, что когда администратор хочет изменить конфигурацию моего запущенного процесса, он изменяет файл конфигурации и отправляет SIGUSR1 на мой PID (здесь проще использовать канал). И я использую SIGUSR2 для чистого отключения процесса. Мне не нужно было использовать сигнал, отличный от этих двух, но некоторые функции времени выполнения могут быть реализованы путем обработки других пользовательских сигналов!
Саид
2
@saeedn Почему вы не используете SIGTERM для чистого завершения процесса? Вот для чего это. Многие другие серверы используют SIGHUP (который имеет смысл только для интерактивного процесса) в качестве сигнала для перезагрузки файлов конфигурации, так что вы можете подумать об этом.
Random832
@ Random832 Ты прав, я знаю, что ты говоришь. Но проблема, о которой я думал, заключалась в том, что, если бы у меня кончились мои 31 выбор сигналов?
Саид
1
Где я могу получить больше информации о сигналах SIGRTMIN ... SIGRTMAX? Где они определены, когда они используются?
Strubbl
6

Сигналы обеспечивают только примитивные средства связи. В частности, нет способа прикрепить к ним какую-либо информацию. Получатель знает только номер сигнала, а не личность отправителя. Несколько сигналов могут быть объединены в один. Учитывая все эти ограничения, не так много полезных целей для сигналов.

Для более сложных целей используйте более сложные средства взаимодействия, такие как трубы или розетки.

Жиль "ТАК - прекрати быть злым"
источник