Bash faz isso por você. Ele o notificará quando o processo terminar, devolvendo o controle e armazenando o status de saída na variável especial $?
. Parece mais ou menos assim:
someprocess
echo $?
Consulte o manual do bash sobre parâmetros especiais para obter mais informações.
Mas eu suponho que você queira fazer outro trabalho enquanto espera. No bash você pode fazer assim:
someprocess &
otherwork
wait %+
echo $?
someprocess &
iniciará o processo em segundo plano. Isso significa que o controle retornará imediatamente e você poderá fazer outro trabalho. Um processo iniciado em segundo plano é chamado de job no bash. wait
esperará que o trabalho especificado termine e retorne o status de saída desse trabalho. As tarefas são referenciadas por %n
. %+
refere-se ao último trabalho iniciado. Consulte o manual do bash sobre o controle do trabalho para obter mais informações.
Se você realmente precisa do PID, você também pode fazer assim:
someprocess &
PID=$!
otherwork
wait $PID
echo $?
$!
é uma variável especial que contém o PID do último processo de segundo plano iniciado.