shell中如何wait某个后台程序并取得其返回值

要等待某个特定PID的后台程序执行结束并取得其返回值(exit code),在BASH中可以这样做:

cmd & p1=$!
wait $p1 || ret=$?

简单解释下:
cmd & p1=$!
其实是2条语句:

  • cmd & 后台执行程序cmd.
  • p1=$! 将上个进程的PID存入p1中

而 wait $p1 || ret=$?
也是两条语句:

  • wait $p1 等待PID是$p1的进程结束,p1进程的返回值将作为wait的返回值.
  • ret=$? 取得上条命令的返回值,存入ret中

因此,全部展开后变成:

cmd &
p1=$!
wait $p1
ret=$?

Leave a Comment


*


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>