1 #pragma once 2 3 #ifdef __cplusplus 4 extern "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 13 typedef enum { P_ALL = 0, 14 P_PID = 1, 15 P_PGID = 2 } idtype_t; 16 17 pid_t wait(int*); 18 pid_t waitpid(pid_t, int*, int); 19 20 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \ 21 defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 22 #include <signal.h> 23 int waitid(idtype_t, id_t, siginfo_t*, int); 24 #endif 25 26 #define WNOHANG 1 27 #define WUNTRACED 2 28 29 #define WSTOPPED 2 30 #define WEXITED 4 31 #define WCONTINUED 8 32 #define WNOWAIT 0x1000000 33 34 #define WEXITSTATUS(s) (((s)&0xff00) >> 8) 35 #define WTERMSIG(s) ((s)&0x7f) 36 #define WSTOPSIG(s) WEXITSTATUS(s) 37 #define WCOREDUMP(s) ((s)&0x80) 38 #define WIFEXITED(s) (!WTERMSIG(s)) 39 #define WIFSTOPPED(s) ((short)((((s)&0xffff) * 0x10001) >> 8) > 0x7f00) 40 #define WIFSIGNALED(s) (((s)&0xffff) - 1U < 0xffu) 41 #define WIFCONTINUED(s) ((s) == 0xffff) 42 43 #ifdef __cplusplus 44 } 45 #endif 46