* syscalls.cc (setsid): Detach process from its console if the current
controlling tty is the console and already closed. * dtable.h (class dtable): Add members to count descriptors referring to the console. * dtable.cc (dtable::dec_console_fds): New function to detach process from its console. (dtable::release): Decrement the counter of console descriptors. (dtable::build_fhandler): Increment it. * exception.cc (ctrl_c_handler): Send SIGTERM to myself when catch CTRL_SHUTDOWN_EVENT.
This commit is contained in:
@ -895,14 +895,20 @@ ctrl_c_handler (DWORD type)
|
||||
if (type == CTRL_LOGOFF_EVENT)
|
||||
return TRUE;
|
||||
|
||||
if ((type == CTRL_CLOSE_EVENT) || (type == CTRL_SHUTDOWN_EVENT))
|
||||
/* Return FALSE to prevent an "End task" dialog box from appearing
|
||||
for each Cygwin process window that's open when the computer
|
||||
is shut down or console window is closed. */
|
||||
/* Return FALSE to prevent an "End task" dialog box from appearing
|
||||
for each Cygwin process window that's open when the computer
|
||||
is shut down or console window is closed. */
|
||||
if (type == CTRL_SHUTDOWN_EVENT)
|
||||
{
|
||||
sig_send (NULL, SIGTERM);
|
||||
return FALSE;
|
||||
}
|
||||
if (type == CTRL_CLOSE_EVENT)
|
||||
{
|
||||
sig_send (NULL, SIGHUP);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
tty_min *t = cygwin_shared->tty.get_tty (myself->ctty);
|
||||
/* Ignore this if we're not the process group lead since it should be handled
|
||||
*by* the process group leader. */
|
||||
|
Reference in New Issue
Block a user