WAIT(1SH) COMMAND REFERENCE WAIT(1SH) NAME wait - await completion of process (sh built-in) SYNOPSIS wait [ n ] DESCRIPTION Wait waits for the specified process to complete and sets the exit status to that of the waited-for process. If n is not given, all currently active child processes are waited for and the exit status is zero. Because the wait(2) system call must be executed in the parent process, the Shell itself executes wait, without creating a new process. EXAMPLES The major use of wait is in the area of multiprogramming at the shell level. The following shell script takes each file argument and checks it for spelling errors and looks for the word UTek (ignoring the case of the letters). All files are processed simultaneously. After all files have been processed, a report is generated for those files with spelling errors and/or that contain the word UTek. #!/bin/sh trap 'rm -f /tmp/speller.*.$$ /tmp/spellgrep.*.$$;exit' 0 1 2 for i in "$@" { if test ! -r "$i" then echo "$0 : $i : Permission denied." exit 1 fi spell "$i" > /tmp/speller."$i".$$& grep -i utek "$i" > /tmp/spellgrep."$i".$$& } wait for i in "$@" { if test -s /tmp/speller."$i".$$ then echo "Spelling errors were found in the file $i." fi set `wc -l /tmp/spellgrep."$i".$$` if test $1 -ne 0 then echo "The word 'utek' was found in the file $i \c" echo "on $1 lines." fi } exit 0 Printed 4/6/89 1
WAIT(1SH) COMMAND REFERENCE WAIT(1SH) It is important to note that background jobs (those started with &) do not have their processes printed by the shell unless the shell is interactive. This means that the shell programmer does not have to worry about getting rid of these messages. This process ID is instead available in the variable $!. RETURN VALUE The exit status returned by wait is the maximum of the exit statuses returned by all of the waited-for processes. CAVEATS Not all the processes of a three- or more-stage pipeline are children of the Shell, and thus cannot be waited for. (This bug does not apply to csh(1csh).) SEE ALSO break(1sh), cd(1sh), chdir(1sh), continue(1sh), csh(1csh), echo(1sh), eval(1sh), exec(1sh), exit(1sh), export(1sh), hash(1sh), login(1), pwd(1sh), read(1sh), readonly(1sh), return(1sh), set(1sh), sh(1sh), shift(1sh), test(1sh), times(1sh), trap(1sh), type(1sh), ulimit(1sh), umask(1sh), unset(1sh), which(1sh), execve(2), and wait(2). Printed 4/6/89 2
%%index%% na:288,120; sy:408,148; de:556,597; ex:1153,1439;2952,345; rv:3297,288; ca:3585,264; se:3849,903; %%index%%000000000131