1#ifndef _SYS_WAIT_H 2#define _SYS_WAIT_H 3#ifdef __cplusplus 4extern "C" { 5#endif 6 7#include <features.h> 8 9#define __NEED_pid_t 10#define __NEED_id_t 11#include <bits/alltypes.h> 12 13typedef enum { 14 P_ALL = 0, 15 P_PID = 1, 16 P_PGID = 2, 17 P_PIDFD = 3 18} idtype_t; 19 20pid_t wait (int *); 21pid_t waitpid (pid_t, int *, int ); 22 23#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ 24 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ 25 || defined(_BSD_SOURCE) 26#include <signal.h> 27int waitid (idtype_t, id_t, siginfo_t *, int); 28#endif 29 30#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 31#include <sys/resource.h> 32pid_t wait3 (int *, int, struct rusage *); 33pid_t wait4 (pid_t, int *, int, struct rusage *); 34#endif 35 36#define WNOHANG 1 37#define WUNTRACED 2 38 39#define WSTOPPED 2 40#define WEXITED 4 41#define WCONTINUED 8 42#define WNOWAIT 0x1000000 43 44#define __WNOTHREAD 0x20000000 45#define __WALL 0x40000000 46#define __WCLONE 0x80000000 47 48#define WEXITSTATUS(s) (((s) & 0xff00) >> 8) 49#define WTERMSIG(s) ((s) & 0x7f) 50#define WSTOPSIG(s) WEXITSTATUS(s) 51#define WCOREDUMP(s) ((s) & 0x80) 52#define WIFEXITED(s) (!WTERMSIG(s)) 53#define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00) 54#define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu) 55#define WIFCONTINUED(s) ((s) == 0xffff) 56 57#if _REDIR_TIME64 58#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 59__REDIR(wait3, __wait3_time64); 60__REDIR(wait4, __wait4_time64); 61#endif 62#endif 63 64#ifdef __cplusplus 65} 66#endif 67#endif 68