在我的c ++程序中,使用fork和execv启动了几个子进程。我不等他们,所以他们在后台跑。当他们完成运行时,我想运行某个功能。怎么办呢?
答案 0 :(得分:2)
听取SIGCHLD
信号并在处理程序中调用您的函数。小心你在处理程序中调用的内容,你应该只调用 async-signal-safe 函数。
答案 1 :(得分:0)
我猜你做想要等待进程完成,但是你想要并行而不是按顺序运行进程。如果是这样,请像现在一样启动每个进程,然后对每个子pid使用waitpid()
系统调用。当每个进程都退出时,每个waitpid都会返回。