diff options
Diffstat (limited to 'winsup/cygwin/fhandler_tty.cc')
-rw-r--r-- | winsup/cygwin/fhandler_tty.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc index f0f850f42..632e3aaf0 100644 --- a/winsup/cygwin/fhandler_tty.cc +++ b/winsup/cygwin/fhandler_tty.cc @@ -710,7 +710,13 @@ fhandler_tty_slave::init (HANDLE f, DWORD a, mode_t) flags = O_RDWR; int ret = open (flags); - if (ret && !cygwin_finished_initializing && !IsDebuggerPresent ()) + + /* We should only grab this when the parent process owns the pgid + (which could happen when a cygwin process starts a DOS process which + starts a cygwin process or when we are being started directly from a + windows process, e.g., from the CMD prompt. */ + if (ret && !cygwin_finished_initializing && !being_debugged () + && (myself->ppid == 1 || myself->ppid == tc->getpgid ())) { /* This only occurs when called from dtable::init_std_file_from_handle We have been started from a non-Cygwin process. So we should become |