1. improved wxKill() implementation for Win32

2. added wxKillError output parameter to wxKill
3. added wxProcess::Kill() and Exists()
4. documented all the new stuff
5. updated the sample to show it


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10592 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2001-06-16 00:59:07 +00:00
parent b3d008dbd5
commit 50567b69d6
9 changed files with 545 additions and 67 deletions

View File

@@ -9,6 +9,14 @@
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
// declarations
// ============================================================================
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
#ifdef __GNUG__
#pragma implementation "process.h"
#endif
@@ -20,17 +28,25 @@
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/defs.h"
#endif
#include "wx/process.h"
// ----------------------------------------------------------------------------
// event tables and such
// ----------------------------------------------------------------------------
DEFINE_EVENT_TYPE(wxEVT_END_PROCESS)
IMPLEMENT_DYNAMIC_CLASS(wxProcess, wxEvtHandler)
IMPLEMENT_DYNAMIC_CLASS(wxProcessEvent, wxEvent)
// ============================================================================
// wxProcess implementation
// ============================================================================
// ----------------------------------------------------------------------------
// wxProcess creation
// ----------------------------------------------------------------------------
void wxProcess::Init(wxEvtHandler *parent, int id, bool redirect)
{
if ( parent )
@@ -46,6 +62,10 @@ void wxProcess::Init(wxEvtHandler *parent, int id, bool redirect)
#endif // wxUSE_STREAMS
}
// ----------------------------------------------------------------------------
// wxProcess termination
// ----------------------------------------------------------------------------
wxProcess::~wxProcess()
{
#if wxUSE_STREAMS
@@ -70,6 +90,10 @@ void wxProcess::Detach()
SetNextHandler(NULL);
}
// ----------------------------------------------------------------------------
// process IO redirection
// ----------------------------------------------------------------------------
#if wxUSE_STREAMS
void wxProcess::SetPipeStreams(wxInputStream *inputSstream,
@@ -82,3 +106,37 @@ void wxProcess::SetPipeStreams(wxInputStream *inputSstream,
}
#endif // wxUSE_STREAMS
// ----------------------------------------------------------------------------
// process killing
// ----------------------------------------------------------------------------
/* static */
wxKillError wxProcess::Kill(int pid, wxSignal sig)
{
wxKillError rc;
(void)wxKill(pid, sig, &rc);
return rc;
}
/* static */
bool wxProcess::Exists(int pid)
{
switch ( wxProcess::Kill(pid, wxSIGNONE) )
{
case wxKILL_OK:
case wxKILL_ACCESS_DENIED:
return TRUE;
default:
case wxKILL_ERROR:
case wxKILL_BAD_SIGNAL:
wxFAIL_MSG( _T("unexpected wxProcess::Kill() return code") );
// fall through
case wxKILL_NO_PROCESS:
return FALSE;
}
}