Sobes.tech
Junior — Middle

¿Puedes explicar qué significa la señal SIGCHLD en el sistema operativo?

sobes.tech AI

Respuesta de la IA

La señal SIGCHLD en los sistemas operativos Unix/Linux se envía al proceso padre cuando uno de sus procesos hijos termina o cambia de estado (por ejemplo, se detiene o se reanuda).

El padre puede manejar esta señal para saber cuándo un proceso hijo ha finalizado y liberar los recursos asociados (por ejemplo, llamar a wait() o waitpid()), evitando la aparición de procesos zombis.

Ejemplo de manejo 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("Proceso hijo terminado\n");
    }
}

int main() {
    signal(SIGCHLD, sigchld_handler);
    if (fork() == 0) {
        // proceso hijo
        _exit(0);
    }
    // proceso padre
    pause(); // esperar señales
    return 0;
}

De esta manera, SIGCHLD ayuda a gestionar eficazmente el ciclo de vida de los procesos hijos.