Чому є лише два визначені користувачем сигнали?


11

У списку сигналів, визначених у системі Linux, є два сигнали, зазначені як визначені користувачем сигнали ( SIGUSR1і SIGUSR2). Інші сигнали будуть підніматися або вловлюватися в конкретних ситуаціях, але SIGUSR залишаються для використання користувацьким додатком.

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

Відповіді:


13

Історично, Unix були тільки ці два сигнали, але сучасні системи мають в реальному масштабі часу сигнали SIGRTMIN... SIGRTMAX.

Через нерозумну і непридатну семантику API-сигналів сигналу майже немає випадків використання, коли сигнали були б переважнішими над іншими механізмами зв'язку, такими як труби. Тому виділення нового номера сигналу ніколи не вважалося необхідним.


Спасибі. У моєму випадку я обробляю SIGUSR1 для конфігурації. Це означає, що коли адміністратор хоче змінити конфігурацію мого запущеного процесу, він змінює конфігураційний файл і надсилає SIGUSR1 на мій PID (тут простіше використовувати трубу). І я використовую SIGUSR2 для чистого відключення процесу. Мені не потрібно було використовувати сигнал, відмінний від цих двох, але деякі функції виконання можуть бути реалізовані, обробляючи інші визначені користувачем сигнали!
saeedn

2
@saeedn Чому ви не використовуєте SIGTERM для чистого відключення процесу? Ось для чого це. Багато інших серверів використовують SIGHUP (що має інший сенс для інтерактивного процесу) як сигнал для перезавантаження файлів конфігурації, тож ви можете це врахувати.
Випадково832

@ Random832 Ти маєш рацію, я знаю, що ти кажеш. Але проблема, над якою я думав, полягала в тому, що, якщо я закінчувався б із 31 варіанту сигналів?
saeedn

1
Де я можу отримати більше інформації про сигнали SIGRTMIN ... SIGRTMAX? Де вони визначені при їх використанні?
Струбль

6

Сигнали забезпечують лише примітивний засіб зв'язку. Зокрема, немає ніякого способу приєднати до них будь-яку інформацію. Одержувач знає лише номер сигналу, а не особу відправника. Кілька сигналів можна з'єднати в один. Враховуючи всі ці обмеження, не так багато корисних цілей для сигналів.

Для більш складних цілей використовують більш складні засоби взаємодії, наприклад, труби або розетки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.