The wait program
wait waits for a set of children, then executes a program.
Interface
In an execlineb script:
wait [ -I | -i ] [ -a | -o ] [ -r | -t timeout ] { [ pids... ] } prog...
- wait reads a list of pids in a (possibly empty) block, and unquotes it.
- wait waits for every child whose pid is listed in pids.... If pids... is an empty list, it waits for every child process it has.
- wait then execs into prog....
Options
- -r : equivalent to -t 0. Do not pause: only reap processes that are already dead when wait is invoked.
- -t timeout : wait for a maximum of timeout milliseconds. If there still are living processes among pids... (or among wait's children if pids... is an empty list), after timeout milliseconds, they will not be reaped.
- -I : loose. If wait times out while waiting for children to die, it will still exec into prog.... This is the default.
- -i : strict. If wait times out, it will print an error message and exit 99.
- -o : wait for one of the listed pids — exec into prog as soon as one of the listed children dies. (If no pid is listed, wait for one child to die.) The ! environment variable will be set to the pid that died, and the ? environment variable will contain an approximation of its exit code. If no listed child has died before wait has to exec (either because it timed out or it has no suitable children left), the ? and ! environment variables are unset.
- -a : wait for all of the listed pids. Do not touch the ! or ? variables. This is the default.
Notes
- For POSIX compatibility, wait also works when it cannot find a block. In that case, all the options are still supported and have the same effect, but the rest of the command line is interpreted as pids... arguments and wait does not execute into a program; instead, it exits with a conforming exit code.
