cleaned up the waitpid() result processing mess

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11768 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2001-10-01 12:39:42 +00:00
parent dbd25330c5
commit 018e2f1300

View File

@ -298,52 +298,28 @@ void wxHandleProcessTermination(wxEndProcessData *proc_data)
}
while ( rc == -1 && errno == EINTR );
if (rc == -1)
// notify user about termination if required
if ( proc_data->process )
{
// JACS: this could happen if the process was terminated and waitpid called,
// so commenting out for now.
//wxLogSysError(_("Waiting for subprocess termination failed (return code = -1)"));
proc_data->process->OnTerminate
(
proc_data->pid,
(rc == 0) && WIFEXITED(status)
? WEXITSTATUS(status)
: -1
);
}
else if (! (WIFEXITED(status)))
// clean up
if ( proc_data->pid > 0 )
{
wxLogSysError(_("Waiting for subprocess termination failed (WIFEXITED returned zero)"));
/* AFAIK, this can only happen if something went wrong within
wxGTK, i.e. due to a race condition or some serious bug.
After having fixed the order of statements in
GTK_EndProcessDetector(). (KB)
*/
delete proc_data;
}
else if (WIFSIGNALED(status))
else
{
wxLogSysError(_("Waiting for subprocess termination failed (signal not caught)"));
/* AFAIK, this can only happen if something went wrong within
wxGTK, i.e. due to a race condition or some serious bug.
After having fixed the order of statements in
GTK_EndProcessDetector(). (KB)
*/
}
// else
{
// notify user about termination if required
if (proc_data->process)
{
proc_data->process->OnTerminate(proc_data->pid,
WEXITSTATUS(status));
}
// clean up
if ( proc_data->pid > 0 )
{
delete proc_data;
}
else
{
// wxExecute() will know about it
proc_data->exitcode = status;
// wxExecute() will know about it
proc_data->exitcode = status;
proc_data->pid = 0;
}
proc_data->pid = 0;
}
}