我不理解下面的代码:
孩子进程如何在父进程等待其子进程终止时实际上杀死父进程?
pid_t pid;
int counter = 0;
void handler1(int sig) {
counter++;
printf("counter = %d\n", counter);
fflush(stdout);
kill(pid, SIGUSR1);
}
void handler2(int sig) {
counter += 3;
printf("counter = %d\n", counter);
exit(0);
}
int main() {
signal(SIGUSR1, handler1);
if ((pid = fork()) == 0) {
signal(SIGUSR1, handler2);
kill(getppid(), SIGUSR1);
while (1) {
};
} else {
pid_t p;
int status;
if ((p = wait(&status)) > 0) {
counter += 2;
printf("counter = %d\n", counter);
}
}
}
孩子进程如何在父进程等待其子进程终止时实际上杀死父进程?
wait()
中),父进程会收到通知;而在处理完SIGUSR1信号后,父进程会终止并假定子进程已经启动成功。 - Jonas Schäferprintf()
。 - Jonathan Leffler