home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 January / PCWorld_2000-01_cd.bin / Software / Servis / Devc / _SETUP.4 / Group3 / process.h < prev    next >
C/C++ Source or Header  |  1998-12-24  |  5KB  |  174 lines

  1. /* 
  2.  * process.h
  3.  *
  4.  * Function calls for spawning child processes.
  5.  *
  6.  * This file is part of the Mingw32 package.
  7.  *
  8.  * Contributors:
  9.  *  Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
  10.  *
  11.  *  THIS SOFTWARE IS NOT COPYRIGHTED
  12.  *
  13.  *  This source code is offered for use in the public domain. You may
  14.  *  use, modify or distribute it freely.
  15.  *
  16.  *  This code is distributed in the hope that it will be useful but
  17.  *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18.  *  DISCLAMED. This includes but is not limited to warranties of
  19.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20.  *
  21.  * $Revision: 2.3 $
  22.  * $Author: colin $
  23.  * $Date: 1998/04/17 02:59:22 $
  24.  *
  25.  */
  26.  
  27. #ifndef    __STRICT_ANSI__
  28.  
  29. #ifndef    _PROCESS_H_
  30. #define    _PROCESS_H_
  31.  
  32. /* Includes a definition of _pid_t and pid_t */
  33. #include <sys/types.h>
  34.  
  35. /*
  36.  * Constants for cwait actions.
  37.  * Obsolete for Win32.
  38.  */
  39. #define    _WAIT_CHILD        0
  40. #define    _WAIT_GRANDCHILD    1
  41.  
  42. #ifndef    _NO_OLDNAMES
  43. #define    WAIT_CHILD        _WAIT_CHILD
  44. #define    WAIT_GRANDCHILD        _WAIT_GRANDCHILD
  45. #endif    /* Not _NO_OLDNAMES */
  46.  
  47. /*
  48.  * Mode constants for spawn functions.
  49.  */
  50. #define    _P_WAIT        0
  51. #define    _P_NOWAIT    1
  52. #define    _P_OVERLAY    2
  53. #define    _OLD_P_OVERLAY    _P_OVERLAY
  54. #define    _P_NOWAITO    3
  55. #define    _P_DETACH    4
  56.  
  57. #ifndef    _NO_OLDNAMES
  58. #define    P_WAIT        _P_WAIT
  59. #define    P_NOWAIT    _P_NOWAIT
  60. #define    P_OVERLAY    _P_OVERLAY
  61. #define    OLD_P_OVERLAY    _OLD_P_OVERLAY
  62. #define    P_NOWAITO    _P_NOWAITO
  63. #define    P_DETACH    _P_DETACH
  64. #endif    /* Not _NO_OLDNAMES */
  65.  
  66.  
  67. #ifndef RC_INVOKED
  68.  
  69. #ifdef    __cplusplus
  70. extern "C" {
  71. #endif
  72.  
  73. void    _cexit();
  74. void    _c_exit();
  75.  
  76. int    _cwait (int* pnStatus, _pid_t pid, int nAction);
  77.  
  78. _pid_t    _getpid();
  79.  
  80. int    _execl        (const char* szPath, const char* szArgv0, ...);
  81. int    _execle        (const char* szPath, const char* szArgv0, ...);
  82. int    _execlp        (const char* szPath, const char* szArgv0, ...);
  83. int    _execlpe    (const char* szPath, const char* szArgv0, ...);
  84. int    _execv        (const char* szPath, char* const* szaArgv);
  85. int    _execve        (const char* szPath, char* const* szaArgv,
  86.              char* const* szaEnv);
  87. int    _execvp        (const char* szPath, char* const* szaArgv);
  88. int    _execvpe    (const char* szPath, char* const* szaArgv,
  89.              char* const* szaEnv);
  90.  
  91. int    _spawnl        (int nMode, const char* szPath, const char* szArgv0,
  92.              ...);
  93. int    _spawnle    (int nMode, const char* szPath, const char* szArgv0,
  94.              ...);
  95. int    _spawnlp    (int nMode, const char* szPath, const char* szArgv0,
  96.              ...);
  97. int    _spawnlpe    (int nMode, const char* szPath, const char* szArgv0,
  98.              ...);
  99. int    _spawnv        (int nMode, const char* szPath, char* const* szaArgv);
  100. int    _spawnve    (int nMode, const char* szPath, char* const* szaArgv,
  101.              char* const* szaEnv);
  102. int    _spawnvp    (int nMode, const char* szPath, char* const* szaArgv);
  103. int    _spawnvpe    (int nMode, const char* szPath, char* const* szaArgv,
  104.              char* const* szaEnv);
  105.  
  106. /*
  107.  * The functions _beginthreadex and _endthreadex are not provided by CRTDLL.
  108.  * They are provided by MSVCRT.
  109.  *
  110.  * NOTE: Apparently _endthread calls CloseHandle on the handle of the thread,
  111.  * making for race conditions if you are not careful. Basically you have to
  112.  * make sure that no-one is going to do *anything* with the thread handle
  113.  * after the thread calls _endthread or returns from the thread function.
  114.  *
  115.  * NOTE: No old names for these functions. Use the underscore.
  116.  */
  117. unsigned long
  118.     _beginthread    (void (*pfuncStart)(void *),
  119.              unsigned unStackSize, void* pArgList);
  120. void    _endthread    ();
  121.  
  122. #ifdef    __MSVCRT__
  123. unsigned long
  124.     _beginthreadex    (void *pSecurity, unsigned unStackSize,
  125.              unsigned (*pfuncStart)(void*), void* pArgList,
  126.              unsigned unInitFlags, unsigned* pThreadAddr);
  127. void    _endthreadex    (unsigned unExitCode);
  128. #endif
  129.  
  130. unsigned long __threadid (void);
  131. #define _threadid (__threadid ())
  132.  
  133. unsigned long __threadhandle(void);
  134.  
  135.  
  136. #ifndef    _NO_OLDNAMES
  137. /*
  138.  * Functions without the leading underscore, for portability. These functions
  139.  * live in liboldnames.a.
  140.  */
  141. int    cwait (int* pnStatus, pid_t pid, int nAction);
  142. pid_t    getpid ();
  143. int    execl (const char* szPath, const char* szArgv0, ...);
  144. int    execle (const char* szPath, const char* szArgv0, ...);
  145. int    execlp (const char* szPath, const char* szArgv0, ...);
  146. int    execlpe (const char* szPath, const char* szArgv0, ...);
  147. int    execv (const char* szPath, char* const* szaArgv);
  148. int    execve (const char* szPath, char* const* szaArgv, char* const* szaEnv);
  149. int    execvp (const char* szPath, char* const* szaArgv);
  150. int    execvpe (const char* szPath, char* const* szaArgv,
  151.              char* const* szaEnv);
  152. int    spawnl (int nMode, const char* szPath, const char* szArgv0, ...);
  153. int    spawnle (int nMode, const char* szPath, const char* szArgv0, ...);
  154. int    spawnlp (int nMode, const char* szPath, const char* szArgv0, ...);
  155. int    spawnlpe (int nMode, const char* szPath, const char* szArgv0, ...);
  156. int    spawnv (int nMode, const char* szPath, char* const* szaArgv);
  157. int    spawnve (int nMode, const char* szPath, char* const* szaArgv,
  158.              char* const* szaEnv);
  159. int    spawnvp (int nMode, const char* szPath, char* const* szaArgv);
  160. int    spawnvpe (int nMode, const char* szPath, char* const* szaArgv,
  161.               char* const* szaEnv);
  162. #endif    /* Not _NO_OLDNAMES */
  163.  
  164. #ifdef    __cplusplus
  165. }
  166. #endif
  167.  
  168. #endif    /* Not RC_INVOKED */
  169.  
  170. #endif    /* _PROCESS_H_ not defined */
  171.  
  172. #endif    /* Not __STRICT_ANSI__ */
  173.  
  174.