Назад к вопросам
Junior — Middle
71
Можете объяснить, что означает сигнал SIGCHLD в операционной системе?
Ответ от нейросети
sobes.tech AI
Сигнал SIGCHLD в операционных системах Unix/Linux посылается родительскому процессу, когда один из его дочерних процессов завершает работу или изменяет состояние (например, останавливается или возобновляется).
Родитель может обработать этот сигнал, чтобы узнать о завершении дочернего процесса и освободить связанные с ним ресурсы (например, вызвать wait() или waitpid()), предотвращая появление зомби-процессов.
Пример обработки SIGCHLD на 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("Child process terminated\n");
}
}
int main() {
signal(SIGCHLD, sigchld_handler);
if (fork() == 0) {
// дочерний процесс
_exit(0);
}
// родительский процесс
pause(); // ждать сигналов
return 0;
}
Таким образом, SIGCHLD помогает эффективно управлять жизненным циклом дочерних процессов.