--- ray/src/common/rtprocess.h 2003/10/21 19:19:28 3.5 +++ ray/src/common/rtprocess.h 2004/10/23 18:55:52 3.11 @@ -1,4 +1,4 @@ -/* RCSid $Id: rtprocess.h,v 3.5 2003/10/21 19:19:28 schorsch Exp $ */ +/* RCSid $Id: rtprocess.h,v 3.11 2004/10/23 18:55:52 schorsch Exp $ */ /* * rtprocess.h * Routines to communicate with separate process via dual pipes @@ -11,11 +11,29 @@ #include #ifdef _WIN32 #include /* DWORD etc. */ - typedef DWORD pid_t; + #include + typedef DWORD RT_PID; #include /* getpid() and others */ #define nice(inc) win_nice(inc) + + #ifdef __cplusplus + extern "C" { + #endif + extern FILE *win_popen(char *command, char *type); + extern int win_pclose(FILE *p); + int win_kill(RT_PID pid, int sig /* ignored */); + #define kill(pid,sig) win_kill(pid,sig) + #ifdef __cplusplus + } + #endif + + #define popen(cmd,mode) win_popen(cmd,mode) + #define pclose(p) win_pclose(p) #else + #include #include + #include + typedef pid_t RT_PID; #endif #include "paths.h" @@ -29,8 +47,8 @@ extern "C" { This means that we shouldn't rely on PIDs and file descriptors being the same type, so we have to describe processes with a struct, - instead of the original int[3]. To keep things simple, we typedef - the posix pid_t on those systems that don't have it already. + instead of the original int[3]. For that purpose, we typedef a + platform independent RT_PID. */ @@ -50,7 +68,7 @@ typedef struct { int r; /* read handle */ int w; /* write handle */ int running; /* doing something */ - pid_t pid; /* process ID */ + RT_PID pid; /* process ID */ } SUBPROC; #define SP_INACTIVE {-1,-1,0,0} /* for static initializations */