Você pode detectar que um subprocesso terminou capturando o sinal SIGCHLD.
Eu estava usando o seguinte script bash para executar vários comandos em paralelo. Na verdade, aguarda até que todos os comandos paralelos sejam concluídos e, em seguida, prossiga. Agora, eu quero mudar este bash de uma forma que aguarda apenas o primeiro "kill" e não importa que esse kill venha da execução do comando. Alguma sugestão para fazer isso?
for cmd in "$@"; do {
echo "Process \"$cmd\" started";
$cmd & pid=$!
PID_LIST+=" $pid";
} done
trap "kill $PID_LIST" SIGINT
echo "Parallel processes have started";
wait $PID_LIST
echo
echo "All processes have completed";
Você pode detectar que um subprocesso terminou capturando o sinal SIGCHLD.