From 0cc642a5f1b2121b4a451dfcd25fd98384f694c9 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Thu, 26 Jul 2001 00:10:52 +0000 Subject: * 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. --- winsup/cygwin/exceptions.cc | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'winsup/cygwin/exceptions.cc') diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 3c9198475..7a2061aa5 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -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. */ -- cgit v1.2.3