Junior — Middle
Vai jūs varat izskaidrot, ko nozīmē signāls SIGCHLD operētājsistēmā?
sobes.tech AI
Atbilde no AI
Unix/Linux operētājsistēmās signāls SIGCHLD tiek nosūtīts vecāku procesam, kad viens no tā bērnu procesiem beidz darbu vai maina stāvokli (piemēram, apstājas vai atsāk).
Vecāks var apstrādāt šo signālu, lai uzzinātu, kad bērnu process ir beidzis, un atbrīvotu ar to saistītos resursus (piemēram, izsaucot wait() vai waitpid()), novēršot zombie procesu rašanos.
C valodas SIGCHLD apstrādes piemērs:
#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("Bērnu process ir beidzis\n");
}
}
int main() {
signal(SIGCHLD, sigchld_handler);
if (fork() == 0) {
// bērna process
_exit(0);
}
// vecāku process
pause(); // gaidīt signālus
return 0;
}
Šādi SIGCHLD palīdz efektīvi pārvaldīt bērnu procesu dzīves ciklu.