- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
- #ifndef _SYS_WAIT_H_
- #define _SYS_WAIT_H_
- #include <ansi_compat.h>
- #include <sys/cdefs.h>
- #if !defined(_POSIX_SOURCE)
- union wait {
- #else
- union __wait {
- #endif /* !defined(_POSIX_SOURCE) */
- #ifdef __vax
- int w_status; /* used in syscall */
- #endif /* __vax */
- #ifdef __mips__
- unsigned int w_status; /* used in syscall */
- #endif /* __mips */
- /*
- * Terminated process status.
- */
- struct {
- #ifdef __vax
- unsigned short w_Termsig:7; /* termination signal */
- unsigned short w_Coredump:1; /* core dump indicator */
- unsigned short w_Retcode:8; /* exit code if w_termsig==0 */
- #endif /* __vax */
- #ifdef __mips__
- #ifdef __MIPSEL__
- unsigned int w_Termsig:7; /* termination signal */
- unsigned int w_Coredump:1; /* core dump indicator */
- unsigned int w_Retcode:8; /* exit code if w_termsig==0 */
- unsigned int w_Filler:16; /* pad to word boundary */
- #endif /* __MIPSEL */
- #ifdef __MIPSEB__
- unsigned int w_Filler:16; /* pad to word boundary */
- unsigned int w_Retcode:8; /* exit code if w_termsig==0 */
- unsigned int w_Coredump:1; /* core dump indicator */
- unsigned int w_Termsig:7; /* termination signal */
- #endif /* __MIPSEB */
- #endif /* __mips */
- } w_T;
- /*
- * Stopped process status. Returned
- * only for traced children unless requested
- * with the WUNTRACED option bit.
- */
- struct {
- #ifdef __vax
- unsigned short w_Stopval:8; /* == W_STOPPED if stopped */
- unsigned short w_Stopsig:8; /* signal that stopped us */
- #endif /* __vax */
- #ifdef __mips__
- #ifdef __MIPSEL__
- unsigned int w_Stopval:8; /* == W_STOPPED if stopped */
- unsigned int w_Stopsig:8; /* signal that stopped us */
- unsigned int w_Filler:16; /* pad to word boundary */
- #endif /* __MIPSEL */
- #ifdef __MIPSEB__
- unsigned int w_Filler:16; /* pad to word boundary */
- unsigned int w_Stopsig:8; /* signal that stopped us */
- unsigned int w_Stopval:8; /* == W_STOPPED if stopped */
- #endif /* __MIPSEB */
- #endif /* __mips */
- } w_S;
- };
- #if !defined(_POSIX_SOURCE)
- #define w_termsig w_T.w_Termsig
- #define w_coredump w_T.w_Coredump
- #define w_retcode w_T.w_Retcode
- #define w_stopval w_S.w_Stopval
- #define w_stopsig w_S.w_Stopsig
- #define WSTOPPED 0177 /* value of s.stopval if process is stopped */
- #endif /* !defined(_POSIX_SOURCE) */
- #ifdef WSTOPPED
- #define _WSTOPPED WSTOPPED
- #else
- #define _WSTOPPED 0177
- #endif
- /*
- * Option bits for the second argument of wait3. WNOHANG causes the
- * wait to not hang if there are no stopped or terminated processes, rather
- * returning an error indication in this case (pid==0). WUNTRACED
- * indicates that the caller should receive status about untraced children
- * which stop due to signals. If children are stopped and a wait without
- * this option is done, it is as though they were still running... nothing
- * about them is returned.
- */
- #define WNOHANG 1 /* dont hang in wait */
- #define WUNTRACED 2 /* tell about stopped, untraced children */
- /*
- * Must cast as union wait * because POSIX defines the input to these macros
- * as int.
- */
- #ifdef _POSIX_SOURCE
- #define WIFSTOPPED(x) (((union __wait *)&(x))->w_S.w_Stopval == _WSTOPPED)
- #define WIFSIGNALED(x) (((union __wait *)&(x))->w_S.w_Stopval != _WSTOPPED && ((union __wait *)&(x))->w_T.w_Termsig != 0)
- #define WIFEXITED(x) (((union __wait *)&(x))->w_S.w_Stopval != _WSTOPPED && ((union __wait *)&(x))->w_T.w_Termsig == 0)
- #define WEXITSTATUS(x) (((union __wait *)&(x))->w_T.w_Retcode)
- #define WTERMSIG(x) (((union __wait *)&(x))->w_T.w_Termsig)
- #define WSTOPSIG(x) (((union __wait *)&(x))->w_S.w_Stopsig)
- #endif /* _POSIX_SOURCE */
- #if !defined(_POSIX_SOURCE)
- #define WIFSTOPPED(x) (((union wait *)&(x))->w_stopval == WSTOPPED)
- #define WIFSIGNALED(x) (((union wait *)&(x))->w_stopval != WSTOPPED && ((union wait *)&(x))->w_termsig != 0)
- #define WIFEXITED(x) (((union wait *)&(x))->w_stopval != WSTOPPED && ((union wait *)&(x))->w_termsig == 0)
- #define WEXITSTATUS(x) (((union wait *)&(x))->w_retcode)
- #define WTERMSIG(x) (((union wait *)&(x))->w_termsig)
- #define WSTOPSIG(x) (((union wait *)&(x))->w_stopsig)
- #endif /* !defined(_POSIX_SOURCE) */
- pid_t wait __P_((int *));
- pid_t waitpid __P_((pid_t, int *, int));
- #endif /* _SYS_WAIT_H_ */