Sobes.tech
Junior — Middle

Explicați ce sunt semnalele în sistemul de operare Linux și cum să lucrați cu ele

sobes.tech AI

Răspuns de la AI

În Linux, semnalele sunt un mecanism de notificare asincronă a proceselor despre evenimente (de exemplu, întrerupere, terminarea unui proces copil, timeout).

Puncte cheie:

  • Semnalele au identificatori numerici (de exemplu, SIGINT, SIGTERM).
  • Un proces poate trata un semnal cu ajutorul unui handler de semnale sau îl poate ignora.
  • Dacă semnalul nu este tratat, se aplică acțiunea implicită (de exemplu, terminarea procesului).

Exemplu de tratare a semnalului SIGINT (Ctrl+C) în C:

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

void handler(int signum) {
    printf("S-a primit semnalul %d, se închide...\n", signum);
    _exit(0);
}

int main() {
    signal(SIGINT, handler);
    while(1) {
        printf("Lucrăm...\n");
        sleep(1);
    }
    return 0;
}

În shell, semnalele pot fi trimise cu comanda kill folosind PID-ul, de exemplu kill -SIGTERM 1234.