wait [ job ... ]
       Wait for the specified jobs or processes.  If job is not given  then
       all  currently  active child processes are waited for.  Each job can
       be either a job specification or the process ID of a job in the  job
       table.   The exit status from this command is that of the job waited
       for.  If job represents an unknown job or process ID, a  warning  is
       printed  (unless the POSIX_BUILTINS option is set) and the exit sta-
       tus is 127.

       It is possible to wait for recent processes  (specified  by  process
       ID,  not  by  job)  that  were running in the background even if the
       process has exited.  Typically the process ID will  be  recorded  by
       capturing the value of the variable $! immediately after the process
       has been started.  There is a limit on the number of process IDs re-
       membered by the shell; this is given by the value of the system con-
       figuration  parameter  CHILD_MAX.  When this limit is reached, older
       process IDs are discarded, least recently started processes first.

       Note there is no protection against the process ID wrapping, i.e. if
       the wait is not executed soon enough there is a chance  the  process
       waited  for  is  the wrong one.  A conflict implies both process IDs
       have been generated  by  the  shell,  as  other  processes  are  not
       recorded,  and  that  the user is potentially interested in both, so
       this problem is intrinsic to process IDs.
