On Friday 04 May 2012 13:46:32 Andreas Schwab wrote: > Mike Frysinger <vap...@gentoo.org> writes: > > i wish there was a way to use `wait` that didn't block until all the pids > > returned. maybe a dedicated option, or a shopt to enable this, or a new > > command. > > > > for example, if i launched 10 jobs in the background, i usually want to > > wait for the first one to exit so i can queue up another one, not wait > > for all of them. > > If you set -m you can trap on SIGCHLD while waiting.
awesome, that's a good mitigation #!/bin/bash set -m cnt=0 trap ': $(( --cnt ))' SIGCHLD for n in {0..20} ; do ( d=$(( RANDOM % 10 )) echo $n sleeping $d sleep $d ) & : $(( ++cnt )) if [[ ${cnt} -ge 10 ]] ; then echo going to wait wait fi done trap - SIGCHLD wait it might be a little racy (wrt checking cnt >= 10 and then doing a wait), but this is good enough for some things. it does lose visibility into which pids are live vs reaped, and their exit status, but i more often don't care about that ... -mike
signature.asc
Description: This is a digitally signed message part.