* exceptions.cc (signal_exit): Move captive process termintation...
(_cygtls::interrupt_setup): ...into here. (sigpacket::process): Simplify setting of handler when have_execed. (_cygtls::interrupt_setup): Don't call proc_subproc when we've execed. * globals.cc (exit_states): Delete unneeded ES_EXEC_EXIT. * pinfo.cc (pinfo::exit): Change debugging output. Call proc_terminate rather than the now-obsolete sigproc_terminate. Don't set exit_state to ES_EXEC_EXIT. Set exit_state to ES_FINAL later. * sigproc.cc (sigproc_terminate): Delete function. (wait_sig): Don't call proc_subproc if have_execed. * sigproc.h (sigproc_terminate): Delete declaration. * sync.h (lock_process::lock_process): Don't set exit_state to ES_PROCESS_LOCKED. (lock_process::operator LONG): Define.
This commit is contained in:
@@ -175,18 +175,16 @@ pinfo::maybe_set_exit_code_from_windows ()
|
||||
void
|
||||
pinfo::exit (DWORD n)
|
||||
{
|
||||
minimal_printf ("winpid %d, exit %d", GetCurrentProcessId (), n);
|
||||
sigproc_terminate (ES_FINAL);
|
||||
debug_only_printf ("winpid %d, exit %d", GetCurrentProcessId (), n);
|
||||
proc_terminate ();
|
||||
lock_process until_exit (true);
|
||||
cygthread::terminate ();
|
||||
|
||||
if (n != EXITCODE_NOSET)
|
||||
self->exitcode = EXITCODE_SET | n;/* We're really exiting. Record the UNIX exit code. */
|
||||
else
|
||||
{
|
||||
exit_state = ES_EXEC_EXIT;
|
||||
maybe_set_exit_code_from_windows ();
|
||||
}
|
||||
maybe_set_exit_code_from_windows (); /* may block */
|
||||
exit_state = ES_FINAL;
|
||||
|
||||
if (myself->ctty > 0 && !iscons_dev (myself->ctty))
|
||||
{
|
||||
|
Reference in New Issue
Block a user