[newlib-cygwin] Cygwin: console Add comment for the recent change
Takashi Yano
tyan0@sourceware.org
Mon Nov 11 12:45:35 GMT 2024
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=87cd4f3fbd06217ce44c5da4e94fa6af59e8e39b
commit 87cd4f3fbd06217ce44c5da4e94fa6af59e8e39b
Author: Takashi Yano <takashi.yano@nifty.ne.jp>
Date: Mon Nov 11 21:38:38 2024 +0900
Cygwin: console Add comment for the recent change
Fixes: 30d266947842 ("Cygwin: console: Fix clean up conditions in close()")
Suggested-by: Brian Inglis <Brian.Inglis@SystematicSW.ab.ca>
Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp>
Diff:
---
winsup/cygwin/fhandler/console.cc | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc
index 2651e49a6..0660ee305 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))
{
More information about the Cygwin-cvs
mailing list