X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/accb325754496ee949369884bd1bc2c1263c89ff..b6ca231f85a50ea7dc5af6d0f3c98854970dffdc:/src/unix/utilsunx.cpp?ds=sidebyside diff --git a/src/unix/utilsunx.cpp b/src/unix/utilsunx.cpp index deeaa836ba..23658ace65 100644 --- a/src/unix/utilsunx.cpp +++ b/src/unix/utilsunx.cpp @@ -135,9 +135,39 @@ void wxUsleep(unsigned long milliseconds) // process management // ---------------------------------------------------------------------------- -int wxKill(long pid, wxSignal sig) +int wxKill(long pid, wxSignal sig, wxKillError *rc) { - return kill((pid_t)pid, (int)sig); + int err = kill((pid_t)pid, (int)sig); + if ( rc ) + { + switch ( err ) + { + case 0: + *rc = wxKILL_OK; + break; + + case EINVAL: + *rc = wxKILL_BAD_SIGNAL; + break; + + case EPERM: + *rc = wxKILL_ACCESS_DENIED; + break; + + case ESRCH: + *rc = wxKILL_NO_PROCESS; + break; + + default: + // this goes against Unix98 docs so log it + wxLogDebug(_T("unexpected kill(2) return value %d"), err); + + // something else... + *rc = wxKILL_ERROR; + } + } + + return err; } #define WXEXECUTE_NARGS 127