Sobes.tech
Junior — Middle

Magyarázza el, mik azok a jelek a Linux operációs rendszerben, és hogyan kell velük dolgozni

sobes.tech MI

Válasz az MI-től

Linuxban a jelek aszinkron értesítési mechanizmust jelentenek a folyamatok számára eseményekről (például megszakítás, gyermekfolyamat befejezése, időtúllépés).

Fő pontok:

  • A jelek numerikus azonosítókkal rendelkeznek (például SIGINT, SIGTERM).
  • Egy folyamat kezelheti a jelet egy jelkezelő segítségével vagy figyelmen kívül hagyhatja.
  • Ha a jelet nem kezelik, az alapértelmezett művelet kerül végrehajtásra (például a folyamat befejezése).

Példa a SIGINT (Ctrl+C) jel kezelésére C nyelven:

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

void handler(int signum) {
    printf("Jel %d érkezett, leállás...\n", signum);
    _exit(0);
}

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

Shellben a jeleket a kill parancs segítségével lehet küldeni a PID-vel, például kill -SIGTERM 1234.