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
       processes are not recorded, and that the user is potentially in-
       terested in both, so this problem is intrinsic to process IDs.
