int err = kill((pid_t)pid, (int)sig);
if ( rc )
{
- switch ( err )
+ switch ( errno )
{
case 0:
*rc = wxKILL_OK;
return wxExecute(wxMakeShellCommand(command), output);
}
+// Shutdown or reboot the PC
+bool wxShutdown(wxShutdownFlags wFlags)
+{
+ wxChar level;
+ switch ( wFlags )
+ {
+ case wxSHUTDOWN_POWEROFF:
+ level = _T('0');
+ break;
+
+ case wxSHUTDOWN_REBOOT:
+ level = _T('6');
+ break;
+
+ default:
+ wxFAIL_MSG( _T("unknown wxShutdown() flag") );
+ return FALSE;
+ }
+
+ return system(wxString::Format(_T("init %c"), level).mb_str()) == 0;
+}
+
+
#if wxUSE_GUI
void wxHandleProcessTermination(wxEndProcessData *proc_data)
if ( fd != STDERR_FILENO )
close(fd);
}
+
+#ifndef __VMS
+ if ( flags & wxEXEC_MAKE_GROUP_LEADER )
+ {
+ // Set process group to child process' pid. Then killing -pid
+ // of the parent will kill the process and all of its children.
+ setsid();
+ }
+#endif
}
// redirect stdio, stdout and stderr