我不明白下面的代码:父进程等到子进程终止时,子进程如何才能杀死父进程?
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);
}
}
}
如何可以在父进程等待,直到它的子进程终止子进程实际上杀害父进程?
使用案例:家长分给孩子。孩子通过阅读配置等启动,并且只有在成功启动后才将SIGUSR1发送给父节点。在此之前,如果孩子在开始时死亡(因为它是在“wait()”中),并且在处理完SIGUSR1之后父节点终止并假定孩子会好。 –
注意[如何避免在信号处理程序中使用'printf()'](http://stackoverflow.com/questions/16891019/)。 –