我正在尝试使用的代码(korn中的shell脚本)是这样的:
load_x ()
{
consumer_load &
producer_spool
}
while read line
do
load_x &
done < list_of_loads
wait
简而言之,我试图从平面文件中读取一个表列表,然后并行触发它们的负载。我还在后台触发consumer_load函数,以便producer_spool函数可以通过命名管道向其提供数据。 我面临的问题是,wait语句似乎不适用于在后台触发的内部子进程(consumer_load&amp;)。即它等待load_x函数完成,但不等待consumer_load完成并移动到下一个语句。 在这种情况下,如果producer_spool函数在consumer_load之前完成,则即使consumer_load仍在运行,脚本也将结束。 有没有办法让脚本等待所有子进程?将wait_x(作为最后一行)放在内部会有效吗?
答案 0 :(得分:0)
我认为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
答案 1 :(得分:0)
我认为你应该:
load_x ()
{
(
consumer_load &
producer_spool
wait
)
}
否则load_x假设它总是在后台运行,如果不是,它的“等待”也会等待其他背景。