Home | History | Annotate | Line # | Download | only in libiberty
      1 /*
      2 
      3 @deftypefn Supplemental int waitpid (int @var{pid}, int *@var{status}, int)
      4 
      5 This is a wrapper around the @code{wait} function.  Any ``special''
      6 values of @var{pid} depend on your implementation of @code{wait}, as
      7 does the return value.  The third argument is unused in @libib{}.
      8 
      9 @end deftypefn
     10 
     11 */
     12 
     13 #ifdef HAVE_CONFIG_H
     14 #include "config.h"
     15 #endif
     16 #include "ansidecl.h"
     17 
     18 /* On some systems (such as WindISS), you must include <sys/types.h>
     19    to get the definition of "pid_t" before you include <sys/wait.h>.  */
     20 #include <sys/types.h>
     21 
     22 #ifdef HAVE_SYS_WAIT_H
     23 #include <sys/wait.h>
     24 #endif
     25 
     26 #ifdef __MINGW32__
     27 #include <process.h>
     28 #define wait(s)  _cwait(s,pid,_WAIT_CHILD)
     29 #endif
     30 
     31 pid_t
     32 waitpid (pid_t pid, int *stat_loc, int options ATTRIBUTE_UNUSED)
     33 {
     34   for (;;)
     35     {
     36       int wpid = wait(stat_loc);
     37       if (wpid == pid || wpid == -1)
     38 	return wpid;
     39     }
     40 }
     41