gpt4 book ai didi

windows - (fork/waitpid) 等待子进程列表,但每次子进程完成时都会中断等待

转载 作者:可可西里 更新时间:2023-11-01 09:19:39 25 4
gpt4 key购买 nike

我正在使用 fork 生成许多并行运行多个任务的子进程。在我的例子中,简单地等待循环中的所有子进程是不够的,因为如果我列表中的第一个进程是最后一个完成的,那么我的 waitpid 调用将阻塞,直到该进程完成。

我希望我的 waitpid 调用在每次进程完成时唤醒。原因是我想立即检查已完成的子进程的退出代码以确定该进程是否成功,以便我可以取消仍在运行的任何子进程。在我的例子中,如果任何子进程返回非零退出代码,让它们继续(可能持续数小时!)是没有意义的,因为这将指示错误,即使是一个错误也会使整个工作变得毫无意义。

(编辑:我知道这不是 waitpid 实际工作的方式,但我正在寻找类似的东西。)

现在,我可以通过使用循环调用带有WNOHANG标志的waitpid然后继续检查我的子进程 sleep 来做到这一点单个 waitpid 调用之间的间隔,但这个解决方案似乎是一个 hack。有没有人有更优雅的解决方案?

最佳答案

您可以使用 wait函数,它等待子进程终止并返回已死亡进程的 pid。

关于windows - (fork/waitpid) 等待子进程列表,但每次子进程完成时都会中断等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37004079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com