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 status 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 remembered by the shell; this is given by
       the value of the system configuration 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 pro-
       cesses are not recorded, and that the user is potentially inter-
       ested in both, so this problem is intrinsic to process IDs.
