我正在研究一个程序,该程序通过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不匹配,显然父程序在任何一个孩子开始返回之前结束。我在这里的逻辑非常困难。任何帮助将不胜感激。