1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
/*
FALCON - The Falcon Programming Language.
FILE: process_sys_win.h
MS-Windows implementation of process handle
-------------------------------------------------------------------
Author: Giancarlo Niccolai
Begin: Sat Jan 29 2005
-------------------------------------------------------------------
(C) Copyright 2004: the FALCON developers (see list in AUTHORS file)
See LICENSE file for licensing details.
*/
/** \file
MS-Windows implementation of process handle
*/
#ifndef flc_process_sys_win_H
#define flc_process_sys_win_H
#include <windows.h>
#include <tlhelp32.h>
#include "process.h"
//class FileService;
namespace Falcon { namespace Sys {
class WinProcess: public Process
{
public:
WinProcess();
~WinProcess();
/*
* Interface Implementation
*/
Falcon::Stream *inputStream();
Falcon::Stream *outputStream();
Falcon::Stream *errorStream();
//
bool close();
bool wait( bool block );
bool terminate( bool severe = false );
DWORD pid() const { return m_procId; }
private:
friend bool openProcess(Process* ph, String** argList, bool sinkin, bool sinkout, bool sinkerr, bool mergeErr, bool bg );
HANDLE hPipeInRd;
HANDLE hPipeInWr;
HANDLE hPipeOutRd;
HANDLE hPipeOutWr;
HANDLE hPipeErrRd;
HANDLE hPipeErrWr;
HANDLE m_procHandle;
DWORD m_procId;
};
typedef struct tag_winProcHandle {
HANDLE hSnap;
PROCESSENTRY32 process;
} WIN_PROC_HANDLE;
}} // ns Falcon::Sys
#endif
/* end of process_sys_win.h */
|