我创建了一个有3个孩子的过程。问题在于,当fork()==0
结束时,我不能杀死所有这些孩子。
我的代码是这样的:
for(i=0 ; i<3 ; i++){
if(fork()==0){
//do child things
exit(0);
}
else{
//do parent things
}
}
我想创建这3个孩子而不杀死他们,并且在创建它们时,全部杀死他们。
PS:对不起,我的英语:)
最佳答案
您需要跟踪每个孩子的pid。然后,在循环结束时,您kill
将它们。
pid_t child_pid[3];
for(i=0 ; i<3 ; i++){
child_pid[i] == fork();
if (child_pid[i]==-1){
perror("fork failed");
exit(0);
} else if (child_pid[i]==0){
//do child things
exit(0);
}
else{
//do parent things
}
}
for(i=0 ; i<3 ; i++){
kill(child_pid[i], SIGKILL);
}
关于c - 如何杀死父进程的子树,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39710113/