On Mon, Mar 11, 2024, 22:36 alex xmb sw ratchev <fxmb...@gmail.com> wrote:
> ~ $ bash xmb.smallt > pid 14333 cmd t2 returned 3 > pid 14332 cmd sleep 1 returned 0 > > ~ $ cat xmb.smallt > #!/bin/bash > > run() { > local IFS=' ' run=$* > eval "$run &" > me[$!]=$run > } > alternativly to mention aliases usage shopt -s expand_aliases then in func IFS=' ' alias torun=$* then torun & wa() { > local pid > wait -n -p pid > printf %s\\n "pid $pid cmd ${me[pid]} returned $?" > } > > t2() { > sleep .75 > return 3 > } > > run sleep 1 > run t2 > > wa > wa > > On Mon, Mar 11, 2024, 22:24 Greg Wooledge <g...@wooledge.org> wrote: > >> On Mon, Mar 11, 2024 at 10:19:26PM +0100, Mischa Baars wrote: >> > On Mon, 11 Mar 2024, 21:08 Kerin Millar, <k...@plushkava.net> wrote: >> > > The pid can be obtained with the -p option, as of 5.1. Below is a >> > > synthetic example of how it might be put into practice. >> >> I'd forgotten about that one. A recent addition, and one I've never used >> yet. >> >> > > #!/bin/bash >> > > >> > > declare -A job_by status_by >> > > max_jobs=4 >> > > jobs=0 >> > > >> > > wait_next() { >> > > local pid >> > > wait -n -p pid >> > > status_by[$pid]=$? >> > > >> > >> > How exactly is this indexing implemented internally? Does a first >> number on >> > index n take m bits (using a linked list) or does it take n * m bits >> (using >> > realloc(3))? >> >> "declare -A" makes it an associative array (hash table). >> >> Without that declare -A, it would be a sparsely indexed array. >> >> In either case, it doesn't just blindly allocate millions of bytes of >> memory. It uses something slimmer. >> >>