Sobes.tech
Junior — Middle

Leg uit wat signalen zijn in het Linux-besturingssysteem en hoe ermee te werken

sobes.tech AI

Antwoord van AI

In Linux, signalen zijn een mechanisme voor asynchrone notificatie van processen over gebeurtenissen (bijvoorbeeld onderbreking, beëindiging van een kindproces, timeout).

Belangrijke punten:

  • Signalen hebben numerieke identificaties (bijvoorbeeld SIGINT, SIGTERM).
  • Een proces kan een signaal afhandelen met een signaalhandler of negeren.
  • Als het signaal niet wordt afgehandeld, wordt de standaardactie toegepast (bijvoorbeeld het proces beëindigen).

Voorbeeld van het afhandelen van het SIGINT-signaal (Ctrl+C) in C:

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

void handler(int signum) {
    printf("Signaal %d ontvangen, afsluiten...\n", signum);
    _exit(0);
}

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

In shell kunnen signalen worden verzonden met het commando kill met de PID, bijvoorbeeld kill -SIGTERM 1234.