Sobes.tech
Back to questions
Junior — Middle
74

Объясните, что такое сигналы в операционной системе Linux и как с ними работать

Companies where asked
МТСМТС
Т-БанкТ-Банк

Answer from AI

sobes.tech AI

В Linux сигналы — это механизм асинхронного уведомления процессов о событиях (например, прерывание, завершение дочернего процесса, таймаут).

Основные моменты:

  • Сигналы имеют числовые идентификаторы (например, SIGINT, SIGTERM).
  • Процесс может обработать сигнал с помощью обработчика (signal handler) или игнорировать его.
  • Если сигнал не обработан, применяется действие по умолчанию (например, завершение процесса).

Пример обработки сигнала SIGINT (Ctrl+C) на C:

#include <signal.h>
#include <stdio.h>
#include <unistd.h>

void handler(int signum) {
    printf("Получен сигнал %d, завершаем работу\n", signum);
    _exit(0);
}

int main() {
    signal(SIGINT, handler);
    while(1) {
        printf("Работаем...\n");
        sleep(1);
    }
    return 0;
}

В shell можно отправлять сигналы командой kill по PID, например kill -SIGTERM 1234.