wait.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*
  2.  * Copyright (c) 1982, 1986 Regents of the University of California.
  3.  * All rights reserved.  The Berkeley software License Agreement
  4.  * specifies the terms and conditions for redistribution.
  5.  *
  6.  * @(#)wait.h 7.4 (Berkeley) 1/27/88
  7.  */
  8. #ifndef __SYS_WAIT_H__
  9. #define __SYS_WAIT_H__
  10. #ifdef _POSIX_SOURCE
  11. #define _W_INT(i)   (i)
  12. #else
  13. #define _W_INT(w)   (*(int *)&(w))  /* convert union wait to int */
  14. #define WCOREFLAG   0200
  15. #endif
  16. #define WSTOPFLG                0177
  17. #define WIFSTOPPED(stat)        ((_W_INT(stat)&0377)==_WSTOPPED&&((_W_INT(stat)>>8)&0377)!=0)
  18. #define WSTOPSIG(stat) ((_W_INT(stat)>>8)&0377)
  19. #define WIFSIGNALED(stat)       ((_W_INT(stat)&0377)>0&&((_W_INT(stat)>>8)&0377)==0)
  20. #define WTERMSIG(stat) (_W_INT(stat)&0177)
  21. #define WIFEXITED(stat)         ((_W_INT(stat)&0377)==0)
  22. #define WEXITSTATUS(stat) ((_W_INT(stat)>>8)&0377)
  23. #define WCOREDUMP(stat) (_W_INT(stat) & WCOREFLAG)
  24. /*
  25.  * Option bits for the second argument of wait3.  WNOHANG causes the
  26.  * wait to not hang if there are no stopped or terminated processes, rather
  27.  * returning an error indication in this case (pid==0).  WUNTRACED
  28.  * indicates that the caller should receive status about untraced children
  29.  * which stop due to signals.  If children are stopped and a wait without
  30.  * this option is done, it is as though they were still running... nothing
  31.  * about them is returned.
  32.  */
  33. #define WNOHANG 0100
  34. #define WUNTRACED 0004  /* for POSIX */
  35. #if !defined(_POSIX_SOURCE)
  36. /*
  37.  * Structure of the information in the first word returned by both
  38.  * wait and wait3.  If w_stopval==_WSTOPPED, then the second structure
  39.  * describes the information returned, else the first.  See WUNTRACED below.
  40.  */
  41. typedef union wait {
  42. int w_status; /* used in syscall */
  43. /*
  44.  * Terminated process status.
  45.  */
  46. struct {
  47. #ifdef _MIPSEL
  48. unsigned int w_Termsig:7, /* termination signal */
  49. w_Coredump:1, /* core dump indicator */
  50. w_Retcode:8, /* exit code if w_termsig==0 */
  51. w_Filler:16; /* upper bits filler */
  52. #endif
  53. #ifdef _MIPSEB
  54. unsigned int w_Filler:16, /* upper bits filler */
  55. w_Retcode:8, /* exit code if w_termsig==0 */
  56. w_Coredump:1, /* core dump indicator */
  57. w_Termsig:7; /* termination signal */
  58. #endif
  59. } w_T;
  60. /*
  61.  * Stopped process status.  Returned
  62.  * only for traced children unless requested
  63.  * with the WUNTRACED option bit.
  64.  */
  65. struct {
  66. #ifdef _MIPSEL
  67. unsigned int w_Stopval:8, /* == W_STOPPED if stopped */
  68. w_Stopsig:8, /* signal that stopped us */
  69. w_Filler:16; /* upper bits filler */
  70. #endif
  71. #ifdef _MIPSEB
  72. unsigned int w_Filler:16, /* upper bits filler */
  73. w_Stopsig:8, /* signal that stopped us */
  74. w_Stopval:8; /* == W_STOPPED if stopped */
  75. #endif
  76. } w_S;
  77. } wait_t;
  78. #define w_termsig w_T.w_Termsig
  79. #define w_coredump w_T.w_Coredump
  80. #define w_retcode w_T.w_Retcode
  81. #define w_stopval w_S.w_Stopval
  82. #define w_stopsig w_S.w_Stopsig
  83. #define WSTOPPED        0004    /* wait for processes stopped by signals */
  84. #endif /* !defined(_POSIX_SOURCE) */
  85. #include <sys/types.h>
  86. #include <sys/cdefs.h>
  87. __BEGIN_DECLS
  88. pid_t   wait __P_((int *));
  89. pid_t   waitpid __P_((pid_t, int *, int));
  90. #ifndef _POSIX_SOURCE
  91. pid_t   wait3 __P_((int *, int, void *));
  92. pid_t   wait4 __P_((pid_t, int *, int, void *));
  93. #endif
  94. #endif /* __SYS_WAIT_H__ */