我想同时运行n
个进程(在我的情况下是模拟),所以我正在使用&
:
for i in {1..50};
do
run simulation &
done
每次模拟完成后,我需要解析其输出文件。我的问题是如何知道进程何时完成,以及如何在完成进程时调用函数?
编辑:我认为我需要做的是调用一个函数来调用模拟并在文件完成后解析它。我认为这个功能必须是一个子进程,对吧?
谢谢!
答案 0 :(得分:3)
由于您似乎不想/需要等到所有模拟完成后,您只需执行此操作:
for i in {1..50};
do
{ run simulation && parse output; } &
done
答案 1 :(得分:0)
使用wait
内置实用程序。有关详细信息,请参阅man bash
。在最简单的情况下,wait
本身将等待所有子进程终止。
答案 2 :(得分:0)
wait
内置等待所有孩子完成。如果要为完成的每个作业执行命令,可以使用trap
。在您的情况下,wait
和trap
的组合应该有效:
trap parse_output SIGCHLD
for i in {1..50}; do
run simulation &
done
wait