为了账号安全,请及时绑定邮箱和手机立即绑定

当任何子进程以代码结束时,如何在bash中等待几个子进程完成并返回退出代码!=0?

当任何子进程以代码结束时,如何在bash中等待几个子进程完成并返回退出代码!=0?

翻阅古今 2019-06-27 16:15:57
当任何子进程以代码结束时,如何在bash中等待几个子进程完成并返回退出代码!=0?如何在bash脚本中等待从该脚本生成的几个子进程来完成并返回退出代码!=0,当任何子进程以代码!=0结尾时?简单脚本:#!/bin/bashfor i in `seq 0 9`; do   doCalculations $i &donewait上面的脚本将等待所有10个生成的子进程,但它总是给出退出状态0(请参见help wait)。如何修改这个脚本,以便当任何子进程以代码!=0结尾时,它将发现派生子进程的退出状态并返回退出代码1?有什么比收集子进程的PID、按顺序等待它们和退出状态更好的解决方案吗?
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

wait此外(可选)获取进程的PID等待,并使用$!得到在后台启动的最后一个命令的PID。修改循环,将每个产生的子进程的PID存储到数组中,然后再次循环等待每个PID。

# run processes and store pids in arrayfor i in $n_procs; do
    ./procs[${i}] &
    pids[${i}]=$!done# wait for all pidsfor pid in ${pids[*]}; do
    wait $piddone


查看完整回答
反对 回复 2019-06-27
  • 3 回答
  • 0 关注
  • 940 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信