Bash - 在后台运行进程并在完成后获取返回代码

时间:2017-09-14 12:06:29

标签: bash

在bash中,我想运行一个后台进程,在进程运行时循环执行一些操作,一旦进程停止,我想获取它的返回代码。

这是我到目前为止所做的:

my_build_command
build_pid=$!
sleep 1
while [[ -d /proc/$build_pid ]]
do
    # Do something...
    sleep 1
done

# HOW TO GET THE RETURN CODE OF build_pid?

有可能实现我想要的目标吗?

2 个答案:

答案 0 :(得分:2)

wait $pid会返回相应后台进程的返回码

#!/usr/bin/env bash

(sleep 2; true) &
background_process1_pid=$!
(sleep 2; false) &
background_process2_pid=$!

echo "doing something"

wait $background_process1_pid
echo "background_process1 return code: $?"

wait $background_process2_pid
echo "background_process2 return code: $?"

答案 1 :(得分:0)

先前执行的程序的返回代码由echo $?给出。

在您的情况下,您可能希望使用sleep 1 获取之前的值