cpl_spawn.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef CPL_SPAWN_H_INCLUDED
00031 #define CPL_SPAWN_H_INCLUDED
00032
00033 #include "cpl_vsi.h"
00034
00035 CPL_C_START
00036
00037
00038
00039
00040
00041 int CPL_DLL CPLSpawn( const char * const papszArgv[], VSILFILE* fin, VSILFILE* fout,
00042 int bDisplayErr );
00043
00044 #ifdef WIN32
00045 #include <windows.h>
00046 typedef HANDLE CPL_FILE_HANDLE;
00047 #define CPL_FILE_INVALID_HANDLE NULL
00048 typedef DWORD CPL_PID;
00049 #else
00050 #include <sys/types.h>
00051 typedef int CPL_FILE_HANDLE;
00052 #define CPL_FILE_INVALID_HANDLE -1
00053 typedef pid_t CPL_PID;
00054 #endif
00055
00056 typedef struct _CPLSpawnedProcess CPLSpawnedProcess;
00057
00058 CPLSpawnedProcess CPL_DLL* CPLSpawnAsync( int (*pfnMain)(CPL_FILE_HANDLE, CPL_FILE_HANDLE),
00059 const char * const papszArgv[],
00060 int bCreateInputPipe,
00061 int bCreateOutputPipe,
00062 int bCreateErrorPipe,
00063 char** papszOptions );
00064 CPL_PID CPL_DLL CPLSpawnAsyncGetChildProcessId(CPLSpawnedProcess* p);
00065 int CPL_DLL CPLSpawnAsyncFinish(CPLSpawnedProcess* p, int bWait, int bKill);
00066 CPL_FILE_HANDLE CPL_DLL CPLSpawnAsyncGetInputFileHandle(CPLSpawnedProcess* p);
00067 CPL_FILE_HANDLE CPL_DLL CPLSpawnAsyncGetOutputFileHandle(CPLSpawnedProcess* p);
00068 CPL_FILE_HANDLE CPL_DLL CPLSpawnAsyncGetErrorFileHandle(CPLSpawnedProcess* p);
00069 void CPL_DLL CPLSpawnAsyncCloseInputFileHandle(CPLSpawnedProcess* p);
00070 void CPL_DLL CPLSpawnAsyncCloseOutputFileHandle(CPLSpawnedProcess* p);
00071 void CPL_DLL CPLSpawnAsyncCloseErrorFileHandle(CPLSpawnedProcess* p);
00072
00073 int CPL_DLL CPLPipeRead(CPL_FILE_HANDLE fin, void* data, int length);
00074 int CPL_DLL CPLPipeWrite(CPL_FILE_HANDLE fout, const void* data, int length);
00075
00076 CPL_C_END
00077
00078 #endif // CPL_SPAWN_H_INCLUDED
00079