我的bash脚本看起来像这样
mpiexec ./fortran_bin |& tee text_file
wait
./process_output_files
我基于MPI的Fortran程序使用call exec_cmd(cmd,wait=.true.)
进行了几个同步系统调用。我的问题是handle_output_files
仅等待fortran_bin
完成,但是某些系统命令(cmd
)尚未完成,这使我的输出文件混乱。如何使process_output_files
等待cmd
完成?
cmd
的格式为cat out_{1..n} > out && rm -f out_{1..n}
。我希望它可以同步运行(wait=.false.
),因为cmd
可能很耗时,并且与Fortran程序的其余部分无关。wait
行似乎无效。system(some_script)
的C / C ++程序问同样的问题。但是,如果同一个程序需要被调用命令的结果(例如here和here),我只能找到有关在C / C ++程序中等待的问题。我的bash脚本看起来像这样的mpiexec ./fortran_bin |&tee text_file wait ./process_output_files基于MPI的Fortran程序使用调用...进行多个同步系统调用。
从上面的注释中,看起来像子命令在调用进程上继承了stdout / stderr,并且不留下任何后台进程。