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.