Bash faz isso por você. Ele o notificará quando o processo terminar, devolvendo o controle e armazenará o status de saída na variável especial $?
. É mais ou menos assim:
someprocess
echo $?
Consulte o manual do bash sobre parâmetros especiais para obter mais informações.
Mas suponho que você queira fazer outro trabalho enquanto aguarda. 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á realizar outro trabalho. Um processo iniciado em segundo plano é chamado de trabalho no bash. wait
aguardará a conclusão do trabalho especificado e retornará o status de saída desse trabalho. Os trabalhos são referenciados por %n
. %+
refere-se ao último trabalho iniciado. Consulte o manual do bash sobre controle de tarefas para obter mais informações.
Se você realmente precisa do PID, também pode fazê-lo assim:
someprocess &
PID=$!
otherwork
wait $PID
echo $?
$!
é uma variável especial que contém o PID do último processo em segundo plano iniciado.
wait
funciona? Quanta CPU normalmente leva do sistema?