C 强制子进程在fork之后退出

C 强制子进程在fork之后退出,c,linux,C,Linux,我正在尝试创建一个实际分叉子进程的应用程序。问题是,在完成所有分叉之后,我不需要退出应用程序来关闭所有子进程 我正在使用以下代码: for(i=0;i<tot;i++) { switch(PID = fork()) { case -1: perror("[!] Couldn't fork!\n"); exit(1); case 0: //do something exit(0); default: numfo

我正在尝试创建一个实际分叉子进程的应用程序。问题是,在完成所有分叉之后,我不需要退出应用程序来关闭所有子进程

我正在使用以下代码:

for(i=0;i<tot;i++) {
 switch(PID = fork()) {
    case -1:
      perror("[!] Couldn't fork!\n");
      exit(1);
    case 0:
    //do something
      exit(0);
    default:
      numforks++;
      if (numforks > THREADS)
          for (numforks; numforks > THREADS; numforks--)
              PID = wait(&status);
 }
}

while ((PID = wait(&status)) > 0);
但问题是,并不是只杀死产卵的叉子。它也会杀死父进程。有什么想法吗?

您可以使用
kill()
&计时器在指定的时间间隔后发送

int kill(pid_t pid, int sig);
例如:
kill(0,SIGTERM)


如果pid等于0,则sig将被发送到调用进程的进程组中的每个进程,因为当一个进程分叉时,它将从其父进程继承其PGID。

我只想为标题投票。@TWhite:我的反应正好相反。查看
kill(2)
system call.@t如果你认为这很有趣,那就太令人不安了。@self幽默不在于小孩子的死。幽默在于滚动问题标题,发现杀死剩余的孩子,然后被提醒,“哦,是的,叉和杀死孩子的过程。我有时有一种黑色幽默感,在读了标题和问题后,我内心咯咯地笑了起来。使用它实际上关闭了我的电脑。
int kill(pid_t pid, int sig);