Sobes.tech
Junior — Middle

Vysvetlite, čo sú signály v operačnom systéme Linux a ako s nimi pracovať

sobes.tech AI

Odpoveď od AI

V Linuxe sú signály mechanizmom asynchrónneho upozorňovania procesov o udalostiach (napríklad, prerušenie, ukončenie dcérskeho procesu, timeout).

Hlavné body:

  • Signály majú číselné identifikátory (napríklad, SIGINT, SIGTERM).
  • Proces môže spracovať signál pomocou spracovateľa signálov alebo ho ignorovať.
  • Ak signál nie je spracovaný, aplikuje sa predvolaná akcia (napríklad, ukončenie procesu).

Príklad spracovania signálu SIGINT (Ctrl+C) v C:

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

void handler(int signum) {
    printf("Prijatý signál %d, ukončujem...\n", signum);
    _exit(0);
}

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

V shell, signály je možné poslať príkazom kill s PID, napríklad kill -SIGTERM 1234.