В этой статье разбираются основные сигналы, которые ядро Linux посылает процессам, и как приложения могут реагировать на них.
Сигналы — это механизм асинхронного уведомления процесса о событиях (например, прерывание, тайм-аут, завершение).
Процесс может:
- игнорировать сигнал,
- перехватить и обработать,
- использовать поведение по умолчанию (например, завершиться).
🛠 Ключевые сигналы и их значение
| Сигнал | Описание |
|------------|---------------------------------------------------------------------------|
| `SIGINT` | Прерывание (Ctrl+C), обычно прерывает выполнение процесса |
| `SIGTERM` | Запрос корректного завершения процесса |
| `SIGKILL` | Безусловное завершение, нельзя поймать или игнорировать |
| `SIGHUP` | «Повешенный» терминал, часто сигнал перезагрузки конфигурации |
| `SIGCHLD` | Уведомление родительского процесса о том, что дочерний завершился |
| `SIGALRM` | Таймерный сигнал (например, от `alarm()`) |
| `SIGUSR1`, `SIGUSR2` | Пользовательские сигналы, доступные для произвольного использования |
🔄 Управление сигналами в коде
-
signal() / sigaction() — установить обработчик сигнала -
kill() — отправить сигнал другому процессу -
raise() — послать сигнал самому себе Правильная обработка сигналов важна для корректного завершения, очистки ресурсов и устойчивого поведения демонов и серверов.
linuxopsys.substack.com/p/linux-process-signals-explained