要等待某个特定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=$?
Recent Comments