mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-30 19:10:36 +08:00
* syscalls.cc (check_tty_fds): New function. Check whether there is a fd
referring to pty slave. (setsid): Don't detach console if the process has a pty slave.
This commit is contained in:
parent
46f2e78081
commit
e32b4e81cb
@ -1,3 +1,9 @@
|
|||||||
|
2001-08-24 Kazuhiro Fujieda <fujieda@jaist.ac.jp>
|
||||||
|
|
||||||
|
* syscalls.cc (check_tty_fds): New function. Check whether there is a
|
||||||
|
fd referring to pty slave.
|
||||||
|
(setsid): Don't detach console if the process has a pty slave.
|
||||||
|
|
||||||
Fri Aug 24 8:54:00 2001 Corinna Vinschen <corinna@vinschen.de>
|
Fri Aug 24 8:54:00 2001 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* net.cc (free_addr_list): Add define for symmetry.
|
* net.cc (free_addr_list): Add define for symmetry.
|
||||||
|
@ -65,6 +65,22 @@ close_all_files (void)
|
|||||||
cygwin_shared->delqueue.process_queue ();
|
cygwin_shared->delqueue.process_queue ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL __stdcall
|
||||||
|
check_ttys_fds (void)
|
||||||
|
{
|
||||||
|
int res = FALSE;
|
||||||
|
SetResourceLock (LOCK_FD_LIST, WRITE_LOCK | READ_LOCK, "close_all_files");
|
||||||
|
fhandler_base *fh;
|
||||||
|
for (int i = 0; i < (int) cygheap->fdtab.size; i++)
|
||||||
|
if ((fh = cygheap->fdtab[i]) != NULL && fh->get_device() == FH_TTYS)
|
||||||
|
{
|
||||||
|
res = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ReleaseResourceLock (LOCK_FD_LIST, WRITE_LOCK | READ_LOCK, "close_all_files");
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
extern "C" int
|
extern "C" int
|
||||||
_unlink (const char *ourname)
|
_unlink (const char *ourname)
|
||||||
{
|
{
|
||||||
@ -237,10 +253,11 @@ getppid ()
|
|||||||
extern "C" pid_t
|
extern "C" pid_t
|
||||||
setsid (void)
|
setsid (void)
|
||||||
{
|
{
|
||||||
/* FIXME: for now */
|
|
||||||
if (myself->pgid != _getpid ())
|
if (myself->pgid != _getpid ())
|
||||||
{
|
{
|
||||||
if (myself->ctty == TTY_CONSOLE && !cygheap->fdtab.has_console_fds ())
|
if (myself->ctty == TTY_CONSOLE &&
|
||||||
|
!cygheap->fdtab.has_console_fds () &&
|
||||||
|
!check_ttys_fds ())
|
||||||
FreeConsole ();
|
FreeConsole ();
|
||||||
myself->ctty = -1;
|
myself->ctty = -1;
|
||||||
myself->sid = _getpid ();
|
myself->sid = _getpid ();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user