Sobes.tech
Назад к вопросам
Senior
7

Какие сигналы Linux знаешь? Для чего они используются?

Компании, где спрашивали
WildberriesWildberries

Ответ от нейросети

sobes.tech AI

В Linux сигналы — это механизм асинхронного уведомления процессов о событиях. Они используются для управления процессами, обработки ошибок и взаимодействия с ОС.

Основные сигналы:

  • SIGINT (2) — прерывание процесса (обычно Ctrl+C в терминале).
  • SIGTERM (15) — запрос на корректное завершение процесса.
  • SIGKILL (9) — немедленное завершение процесса (нельзя перехватить).
  • SIGSTOP (19) — приостановка процесса (нельзя игнорировать).
  • SIGCONT (18) — продолжение приостановленного процесса.
  • SIGSEGV (11) — ошибка сегментации (некорректный доступ к памяти).
  • SIGALRM (14) — сигнал таймера.
  • SIGCHLD (17) — уведомление родительского процесса о завершении дочернего.

Использование:

  • Управление жизненным циклом процессов (запуск, остановка, перезапуск).
  • Обработка исключительных ситуаций (например, очистка ресурсов при завершении).
  • Реализация таймаутов и периодических задач.

Пример обработки сигнала SIGINT в Go:

import (
    "os"
    "os/signal"
    "syscall"
    "fmt"
)

func main() {
    sigs := make(chan os.Signal, 1)
    signal.Notify(sigs, syscall.SIGINT)

    fmt.Println("Ожидание SIGINT (Ctrl+C)...")
    <-sigs
    fmt.Println("Получен SIGINT, завершаем работу")
}