2012-11-01 55 views
0

我想运行n过程(在我的情况模拟)同步,所以我使用&像这样:每个模拟完成正在等待进程结束

for i in {1..50}; 
do 
    run simulation & 
done 

后,我需要解析其输出文件。我的问题是如何知道何时完成一个过程,以及在完成过程后如何调用某个功能?

编辑:我想我需要做的是调用一个函数,它会调用模拟并解析完成后的文件。我看到这个函数的方式无论如何都必须是一个子进程,对吗?

谢谢!

回答

3

你似乎并不想/需要等到所有模拟完成后,你可以简单地做到这一点。如果要为每个完成的作业执行命令,可以使用trap。在你的情况下,waittrap组合应该工作:

trap parse_output SIGCHLD 
for i in {1..50}; do 
    run simulation & 
done 
wait 
0

使用wait内建实用程序。有关更多信息,请参阅man bash。在最简单的情况下,wait本身将等待所有子进程终止。所有孩子完成

for i in {1..50}; 
do 
    { run simulation && parse output; } & 
done 
+0

感谢的人,如果你可以看看我的编辑 – Yotam

0

wait内置等待: