我尝试使用的代码(korn 中的 shell 脚本)是这样的:
load_x ()
{
consumer_load &
producer_spool
}
while read line
do
load_x &
done < list_of_loads
wait
简而言之,我试图从平面文件中读取表列表,然后并行触发它们的加载。我还在后台触发 Consumer_load 函数,以便 Producer_spool 函数可以通过命名管道向其提供数据。我面临的问题是等待语句似乎不适用于在后台触发的内部子进程(consumer_load &)。即,它确实等待 load_x 函数完成,但不等待 Consumer_load 完成并移至下一条语句。在这种情况下,如果 Producer_spool 函数在 Consumer_load 之前完成,则即使 Consumer_load 仍在运行,脚本也会结束。有没有办法让脚本等待所有子进程?将 wait 放在 load_x 中(作为最后一行)会起作用吗?
我认为我的问题的答案是由 Barmar 发布的。我仍在验证它,但根据我所看到的,它应该可以工作。
load_x ()
{
consumer_load &
producer_spool
wait # Waits for consumer_load process to finish before exiting load_x
}
while read line
do
load_x &
done < list_of_loads
wait
我是一名优秀的程序员,十分优秀!