diff options
Diffstat (limited to 'winsup')
-rw-r--r-- | winsup/cygwin/fhandler/console.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 2651e49..0660ee3 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -1984,6 +1984,15 @@ fhandler_console::close () NTSTATUS status; status = NtQueryObject (get_handle (), ObjectBasicInformation, &obi, sizeof obi, NULL); + /* If the process is not myself->cygstarted and is the console owner, + the process is the last process on this console device. The console + owner has two console handles, i.e. one is io_handle and the other + is the dupplicated handle for cons_master_thread. + If myself->cygstarted is false and the process is not console owner, + the process is supposed to be started by the exec command in the + owner shell. In this case, the owner process is still alive in the + background and waiting for this process. So the handle count is + three (two in the owner process, one is mine). */ if (NT_SUCCESS (status) && obi.HandleCount == (con.owner == GetCurrentProcessId () ? 2 : 3)) { |