C运行并发进程,然后杀死它们

时间:2016-11-08 16:04:19

标签: c signals fork

我正在研究一个程序,该程序通过fork()生成多个进程并同时运行它们。我想要的是第一个结束触发杀死所有其他进程的进程。我试图弄清楚如何做到这一点。我希望得到一些建议。这就是我到目前为止的想法。

void done(int childid) {
  kill(something?,SIGKILL);
  printf("process %d signaling\n",childid);
}
int main(int argc, char **argv) {
  Signal(SIGCHLD, done);
  pid_t pid;
  for (each command in an array) {
    if ((pid = fork()) == 0) {
      setpgid(0,0);
      Execve(command stuff);
    }
    else if (pid > 0) {
      printf("starting process %d\n",pid);
    }
  }
}

显然这是sudo编码,但奇怪的是我回来的ID与开始的ID不匹配,显然父程序在任何一个孩子开始返回之前结束。我在这里的逻辑非常困难。任何帮助将不胜感激。

0 个答案:

没有答案