我总是对bash感到疯狂,我不明白。 我基本上想要这样做(我没有使用某些特定的语法,它只是为了解释我的问题):
processes_count = 20;
for (i = 0; i < processes_count; i++)
{
php -f file.php "{$i}-{$processes_count}" &
proc_id[i] = $!
}
上述循环启动过程。下一个应该让这些过程“永远活着”!
while(true)
{
foreach(proc_id as id)
{
if(!exist(proc_id[id]))
{
php -f file.php "{$id}-{$processes_count}" &
proc_id[id] = $!
}
}
sleep 5
}
如果有人可以帮助将其翻译成bash,python或其他内容,谢谢:)
答案 0 :(得分:1)
我认为你不能这样做,因为bash
没有提供一种方法来'等待任何一个子进程死亡,让我知道它死了哪一个'。最近的方法是wait
:
wait wait [jobspec or pid ...]
等到每个进程id pid或作业规范指定的子进程 jobspec退出并返回等待的最后一个命令的退出状态。如果一个 给出了工作规范,等待工作中的所有流程。如果没有参数 给定,等待所有当前活动的子进程,以及返回状态 是零。如果jobspec和pid都没有指定shell的活动子进程, 返回状态为127。
这意味着您可以等待特定的孩子死亡,或者您可以等待所有的孩子死亡,但是您无法做您想做的事。
如果您使用Perl或Python,则可以使用wait
系统调用来执行此操作。