Sobes.tech
Junior — Middle

Wyjaśnij, czym są sygnały w systemie operacyjnym Linux i jak z nimi pracować

sobes.tech AI

Odpowiedź od AI

W Linuxie sygnały to mechanizm asynchronicznego powiadamiania procesów o zdarzeniach (np. przerwanie, zakończenie procesu potomnego, timeout).

Główne punkty:

  • Sygnały mają identyfikatory numeryczne (np. SIGINT, SIGTERM).
  • Proces może obsłużyć sygnał za pomocą obsługi sygnałów lub go zignorować.
  • Jeśli sygnał nie jest obsłużony, stosuje się domyślne działanie (np. zakończenie procesu).

Przykład obsługi sygnału SIGINT (Ctrl+C) w C:

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

void handler(int signum) {
    printf("Odebrano sygnał %d, kończę pracę\n", signum);
    _exit(0);
}

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

W shellu można wysłać sygnały poleceniem kill z PID, np. kill -SIGTERM 1234.