updated wxExecute checks in wxGTK to be same as in other Unix ports after recent changes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51310 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2008-01-21 14:51:49 +00:00
parent 563a24f061
commit 56465170cc

View File

@@ -226,12 +226,24 @@ void GTK_EndProcessDetector(gpointer data, gint source,
if ( rc == 0 ) if ( rc == 0 )
{ {
// no, it didn't exit yet, continue waiting // This can only happen if the child application closes our dummy
return; // pipe that is used to monitor its lifetime; in that case, our
// best bet is to pretend the process did terminate, because
// otherwise wxExecute() would hang indefinitely
// (OnExceptionWaiting() won't be called again, the descriptor
// is closed now).
wxLogDebug("Child process (PID %i) still alive, even though notification was received that it terminated.", pid);
}
else if ( rc == -1 )
{
// As above, if waitpid() fails, the best we can do is to log the
// error and pretend the child terminated:
wxLogSysError(_("Failed to check child process' status"));
} }
// set exit code to -1 if something bad happened // set exit code to -1 if something bad happened
proc_data->exitcode = rc != -1 && WIFEXITED(status) ? WEXITSTATUS(status) proc_data->exitcode = (rc > 0 && WIFEXITED(status))
? WEXITSTATUS(status)
: -1; : -1;
// child exited, end waiting // child exited, end waiting