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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user