我创建了一个有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/

10-11 22:42
查看更多