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.