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:
@@ -16,14 +16,14 @@
|
||||
#pragma interface "process.h"
|
||||
#endif
|
||||
|
||||
#include "wx/defs.h"
|
||||
#include "wx/object.h"
|
||||
#include "wx/event.h"
|
||||
|
||||
#if wxUSE_STREAMS
|
||||
#include "wx/stream.h"
|
||||
#endif
|
||||
|
||||
#include "wx/utils.h" // for wxSignal
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// A wxProcess object should be passed to wxExecute - than its OnTerminate()
|
||||
// function will be called when the process terminates.
|
||||
@@ -31,8 +31,6 @@
|
||||
|
||||
class WXDLLEXPORT wxProcess : public wxEvtHandler
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxProcess)
|
||||
|
||||
public:
|
||||
wxProcess(wxEvtHandler *parent = (wxEvtHandler *) NULL, int id = -1)
|
||||
{ Init(parent, id, FALSE); }
|
||||
@@ -69,6 +67,12 @@ public:
|
||||
wxInputStream *errStream);
|
||||
#endif // wxUSE_STREAMS
|
||||
|
||||
// kill the process with the given PID
|
||||
static wxKillError Kill(int pid, wxSignal sig = wxSIGTERM);
|
||||
|
||||
// test if the given process exists
|
||||
static bool Exists(int pid);
|
||||
|
||||
protected:
|
||||
void Init(wxEvtHandler *parent, int id, bool redirect);
|
||||
|
||||
@@ -81,6 +85,8 @@ protected:
|
||||
#endif // wxUSE_STREAMS
|
||||
|
||||
bool m_redirect;
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxProcess)
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@@ -180,8 +180,22 @@ enum wxSignal
|
||||
// further signals are different in meaning between different Unix systems
|
||||
};
|
||||
|
||||
// the argument is ignored under Windows - the process is always killed
|
||||
WXDLLEXPORT int wxKill(long pid, wxSignal sig = wxSIGTERM);
|
||||
enum wxKillError
|
||||
{
|
||||
wxKILL_OK, // no error
|
||||
wxKILL_BAD_SIGNAL, // no such signal
|
||||
wxKILL_ACCESS_DENIED, // permission denied
|
||||
wxKILL_NO_PROCESS, // no such process
|
||||
wxKILL_ERROR // another, unspecified error
|
||||
};
|
||||
|
||||
// send the given signal to the process (only NONE and KILL are supported under
|
||||
// Windows, all others mean TERM), return 0 if ok and -1 on error
|
||||
//
|
||||
// return detailed error in rc if not NULL
|
||||
WXDLLEXPORT int wxKill(long pid,
|
||||
wxSignal sig = wxSIGTERM,
|
||||
wxKillError *rc = NULL);
|
||||
|
||||
// Execute a command in an interactive shell window (always synchronously)
|
||||
// If no command then just the shell
|
||||
|
Reference in New Issue
Block a user