Назад к вопросам
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).
  • Выполнить действие по умолчанию (для большинства сигналов это завершение процесса).
  • Выполнить зарегистрированную функцию-обработчик.