Yonatan Zunger <zun...@humu.com> added the comment:
Eryk: Thanks for finding that! So that I'm sure I understand, if 34187 is resolved, does that mean the stdin.close() is no longer required at all in _Quitter? On Sun, Jul 22, 2018 at 2:12 AM Eryk Sun <rep...@bugs.python.org> wrote: > > Eryk Sun <eryk...@gmail.com> added the comment: > > > On Windows Console, sys.stdin.close() does not prevent a second > > interact call. This might be considered a bug. > > This is a bug in io._WindowsConsoleIO. > > In Python 3, the sys.std* file objects that get created at startup use > closefd=False: > > >>> sys.stdin.buffer.raw.closefd > False > >>> sys.stdout.buffer.raw.closefd > False > >>> sys.stderr.buffer.raw.closefd > False > > Since the REPL uses C FILE streams (or in 3.6+ the underlying console file > handle in Windows), closing sys.stdin does not cause the REPL to exit, and > the PyOS_ReadLine call in the interactive loop continues to work in both > POSIX and Windows. > > That said, closing sys.stdin should cause input() to raise ValueError due > to sys.stdin.fileno() failing (i.e. take the non-tty path) and subsequently > sys.stdin.readline() failing. A second call to > code.InteractiveConsole.interact() should thus fail. The issue is that the > fileno() method of _WindowsConsoleIO isn't raising ValueError like it > should when the file is closed and closefd is false. I've created issue > 34187 with a suggested fix. > > ---------- > nosy: +eryksun > > _______________________________________ > Python tracker <rep...@bugs.python.org> > <https://bugs.python.org/issue34115> > _______________________________________ > ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue34115> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com