Peter Hitchman a écrit :

Is there a better way to check the exist status from a bunch of background jobs in a script?

never used sigchild, but my answer would be to put them in an variable
or array and to wait for every process in turn :

pids=
sleep 60 &
pids="$pids $!"
sleep 60 &
pids="$pids $!"

for pid in $pids; do
        wait $!
        rc=$?
done

alternative :

npids=0
sleep 60 &
pids[npids++]=$!
sleep 50 &
pids[npids++]=$!

while :; do
        for (pidn = 0; pidn < npids; pidn++); do     
                if ! kill -0 ${pids[pidn]}; then
                        wait ${pids[pidn]}
                        rc=$?
                        unset pids[pidn]
                fi
        done
        (( ! ${#pids[*]} )) && break
        sleep 10 # let's the cpu do something else
done

this solution also permit to handle a timeout if necessary.

PS : noth solutions not tested but should work.

Regards,

Cyrille Lefevre
--
mailto:[email protected]



_______________________________________________
ast-users mailing list
[email protected]
https://mailman.research.att.com/mailman/listinfo/ast-users

Reply via email to