Junior — Middle
Pode explicar o que significa o sinal SIGCHLD no sistema operativo?
sobes.tech IA
Resposta da IA
O sinal SIGCHLD nos sistemas operativos Unix/Linux é enviado ao processo pai quando um dos seus processos filhos termina ou muda de estado (por exemplo, é parado ou retomado).
O pai pode tratar este sinal para saber quando um processo filho terminou e libertar os recursos associados (por exemplo, chamando wait() ou waitpid()), evitando a criação de processos zombi.
Exemplo de tratamento de SIGCHLD em 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("Processo filho terminado\n");
}
}
int main() {
signal(SIGCHLD, sigchld_handler);
if (fork() == 0) {
// processo filho
_exit(0);
}
// processo pai
pause(); // esperar sinais
return 0;
}
Assim, SIGCHLD ajuda a gerir eficazmente o ciclo de vida dos processos filhos.