我想运行n
过程(在我的情况模拟)同步,所以我使用&
像这样:每个模拟完成正在等待进程结束
for i in {1..50};
do
run simulation &
done
后,我需要解析其输出文件。我的问题是如何知道何时完成一个过程,以及在完成过程后如何调用某个功能?
编辑:我想我需要做的是调用一个函数,它会调用模拟并解析完成后的文件。我看到这个函数的方式无论如何都必须是一个子进程,对吗?
谢谢!
我想运行n
过程(在我的情况模拟)同步,所以我使用&
像这样:每个模拟完成正在等待进程结束
for i in {1..50};
do
run simulation &
done
后,我需要解析其输出文件。我的问题是如何知道何时完成一个过程,以及在完成过程后如何调用某个功能?
编辑:我想我需要做的是调用一个函数,它会调用模拟并解析完成后的文件。我看到这个函数的方式无论如何都必须是一个子进程,对吗?
谢谢!
你似乎并不想/需要等到所有模拟完成后,你可以简单地做到这一点。如果要为每个完成的作业执行命令,可以使用trap
。在你的情况下,wait
和trap
组合应该工作:
trap parse_output SIGCHLD
for i in {1..50}; do
run simulation &
done
wait
使用wait
内建实用程序。有关更多信息,请参阅man bash
。在最简单的情况下,wait
本身将等待所有子进程终止。所有孩子完成
for i in {1..50};
do
{ run simulation && parse output; } &
done
的wait
内置等待:
感谢的人,如果你可以看看我的编辑 – Yotam