[project @ 2005-01-28 23:33:57 by krasimir]
[ghc-base.git] / include / runProcess.h
1 /* ----------------------------------------------------------------------------
2    (c) The University of Glasgow 2004
3
4    Interface for code in runProcess.c (providing support for System.Process)
5    ------------------------------------------------------------------------- */
6
7 #if !defined(mingw32_HOST_OS) && !defined(__MINGW32__)
8 typedef pid_t ProcHandle;
9 #else
10 // Should really be intptr_t, but we don't have that type on the Haskell side
11 typedef long ProcHandle;
12 #endif
13
14 #if !defined(mingw32_HOST_OS) && !defined(__MINGW32__)
15
16 extern ProcHandle runProcess( char *const args[], 
17                               char *workingDirectory, char **environment, 
18                               int fdStdInput, int fdStdOutput, int fdStdError);
19
20 extern ProcHandle runInteractiveProcess( char *const args[], 
21                                          char *workingDirectory, 
22                                          char **environment, 
23                                          int *pfdStdInput, 
24                                          int *pfdStdOutput, 
25                                          int *pfdStdError);
26
27 #else
28
29 extern ProcHandle runProcess( char *cmd, 
30                               char *workingDirectory, void *environment, 
31                               int fdStdInput, int fdStdOutput, int fdStdError);
32
33 extern ProcHandle runInteractiveProcess( char *cmd, 
34                                          char *workingDirectory, 
35                                          void *environment,
36                                          int *pfdStdInput,
37                                          int *pfdStdOutput,
38                                          int *pfdStdError);
39
40 #endif
41
42 extern int terminateProcess( ProcHandle handle );
43 extern int getProcessExitCode( ProcHandle handle, int *pExitCode );
44 extern int waitForProcess( ProcHandle handle );