Sobes.tech
Junior — Middle

Pouvez-vous expliquer ce que signifie le signal SIGCHLD dans le système d'exploitation?

sobes.tech IA

Réponse de l'IA

Le signal SIGCHLD dans les systèmes d'exploitation Unix/Linux est envoyé au processus parent lorsqu'un de ses processus enfants se termine ou change d'état (par exemple, il s'arrête ou reprend).

Le parent peut gérer ce signal pour savoir quand un processus enfant a terminé et libérer les ressources associées (par exemple, en appelant wait() ou waitpid()), évitant ainsi la création de processus zombies.

Exemple de gestion de SIGCHLD en C :

#include <signal.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>

void sigchld_handler(int signo) {
    int status;
    while (waitpid(-1, &status, WNOHANG) > 0) {
        printf("Processus enfant terminé\n");
    }
}

int main() {
    signal(SIGCHLD, sigchld_handler);
    if (fork() == 0) {
        // processus enfant
        _exit(0);
    }
    // processus parent
    pause(); // attendre les signaux
    return 0;
}

Ainsi, SIGCHLD aide à gérer efficacement le cycle de vie des processus enfants.