Sobes.tech
Junior — Middle

Обяснете какви са сигналите в операционната система Linux и как да работите с тях

sobes.tech AI

Отговор от AI

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

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

  • Сигналите имат числови идентификатори (например, SIGINT, SIGTERM).
  • Процес може да обработи сигнал чрез обработчик на сигнали или да го игнорира.
  • Ако сигналът не бъде обработен, се прилага стандартното действие (например, завършване на процеса).

Пример за обработка на сигнал 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.