免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345
最近访问板块 发新帖
楼主: imyeyeslove
打印 上一主题 下一主题

请问用&把命令扔到后台执行 如何判断其成功与否 此时$?总是0 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2010-02-10 17:13 |只看该作者
我的方法是
(cmd args && echo $? > /tmp/cmd.ec) &
miniqq 发表于 2010-02-08 13:02



    这个不错,也适用于多个后台进程,然后父进程可以loop 着去check status,并根据返回值做一些动作

rm /tmp/cmdreturn.1 /tmp/cmdreturn.2 /tmp/cmdreturn.3
(sleep 5 && echo $? > /tmp/cmdreturn.1 ) &
(sleep 8 && echo $? > /tmp/cmdreturn.2 ) &
(sleep 2 && echo $? > /tmp/cmdreturn.3 ) &
while [  -z "$cmdreturn1" -o -z "$cmdreturn2" -o -z "$cmdreturn3"  ]  ; do
if [ -f /tmp/cmdreturn.1 ] ; then
cmdreturn1=`</tmp/cmdreturn.1`
fi
if [ -f /tmp/cmdreturn.2 ] ; then
cmdreturn2=`</tmp/cmdreturn.2`
fi
if [ -f /tmp/cmdreturn.3 ] ; then
cmdreturn3=`</tmp/cmdreturn.3`
fi
echo "cmdreturn1cmdreturn1 cmdreturn2: $cmdreturn2 cmdreturn3: $cmdreturn3"
sleep 1
done

论坛徽章:
0
42 [报告]
发表于 2010-02-11 00:25 |只看该作者
使用||和while搭配吧

论坛徽章:
0
43 [报告]
发表于 2010-02-11 10:09 |只看该作者
应该从基础讲起吧。用& 开子进程 是不是相当于 exec?

论坛徽章:
0
44 [报告]
发表于 2010-02-11 10:32 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
45 [报告]
发表于 2010-02-12 08:36 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
46 [报告]
发表于 2013-07-17 01:05 |只看该作者
回复 40# iceblood
只可惜你这个答案没有解释一下,我找了一下||是前边一个命令运行出错的情况下才会运行第二个。就应该是这样的效果。如果前一个进程一直运行,这个程序就没有办法打印了,你这个很不错。更重要的是要在后边sleep 0.001一下让子进程先运行。
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP