Назад к вопросам
Middle
73
questionbank
Какие существуют сигналы в операционной системе Linux?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Сигналы в Linux – это способ асинхронного уведомления процессу о произошедших событиях.
Основные стандартные сигналы:
- SIGINT (2): Прерывание с клавиатуры (Ctrl+C).
- SIGQUIT (3): Выход из программы с генерированием дампа памяти (Ctrl+\).
- SIGKILL (9): Принудительное завершение процесса, которое невозможно перехватить или проигнорировать.
- SIGTERM (15): Запрос на завершение процесса, который может быть перехвачен для выполнения очистки.
- SIGHUP (1): Сигнал "hang up", обычно посылается при разрыве соединения или завершении управляющего терминала.
- SIGSEGV (11): Ошибка обращения к недействительной области памяти (segmentation fault).
- SIGFPE (8): Ошибка плавающей точки (например, деление на ноль).
- SIGBUS (10): Ошибка доступа к физической памяти.
- SIGCHLD (17): Уведомление родителю о завершении или остановке дочернего процесса.
- SIGSTOP (19): Остановка процесса (не может быть перехвачен или проигнорирован).
- SIGTSTP (20): Остановка процесса с терминала (Ctrl+Z, может быть перехвачен).
- SIGCONT (18): Продолжение выполнения остановленного процесса.
Помимо стандартных сигналов POSIX, существуют и другие, специфичные для Linux или различных архитектур. Список и номера сигналов могут различаться.
Обработка сигналов в Python осуществляется с помощью модуля signal:
# Импорт модуля signal
import signal
import time
# Функция-обработчик для сигнала SIGINT
def signal_handler(sig, frame):
print(f"Процесс прерван сигналом {sig}")
# Выполнение очистки или других действий перед выходом
exit(0)
# Регистрация обработчика для сигнала SIGINT
signal.signal(signal.SIGINT, signal_handler)
print("Нажмите Ctrl+C для отправки сигнала SIGINT")
# Процесс будет работать до получения сигнала
while True:
time.sleep(1)
Процесс может:
- Игнорировать сигнал (за исключением SIGKILL и SIGSTOP).
- Выполнить действие по умолчанию (для большинства сигналов это завершение процесса).
- Выполнить зарегистрированную функцию-обработчик.