On Sat, Aug 31, 2019 at 7:42 AM Eryk Sun <eryk...@gmail.com> wrote: > > On 8/30/19, Chris Angelico <ros...@gmail.com> wrote: > > On Sat, Aug 31, 2019 at 5:40 AM Eryk Sun <eryk...@gmail.com> wrote: > > > >> Or simply run python.exe from another console process that keeps the > >> console alive (it's reference counted), which is typically cmd.exe or > >> powershell.exe. > > > > Not sure what you mean by "reference counted" > > In Windows 8+, a process attaches to a console by opening > "\Device\ConDrv\Connect" as a connection to an instance of the console > host process, conhost.exe. This handle is stored internally as > "ConsoleHandle" (in its PEB->ProcessParameters). The console API uses > this handle for functions that don't operate on a stream, such as > GetConsoleTitle. > [chomp more details]
Huh. I kinda just assumed that, since cmd.exe was still running, the console would continue to be in use. I guess technically it's a lot more complicated than that, but still, to the average user, the difference won't be visible. > > Of course, most of us use a shell that's a tad more powerful than > > cmd.exe, but the effect is the same regardless. > > Yes, CMD is not a great shell, and PowerShell is tedious (IMO). We can > use bash.exe from MSYS2 or Git instead. But stick to the normal > console interface (i.e. run bash.exe directly), or use winpty if you > need to run Windows Python. The MSYS2 terminal interface (mintty) is > based on named pipes. Its build of Python special cases these pipes, > but they're just pipes to the Windows build, so isatty() is false and > it defaults to full buffering. Also, the REPL of the Windows build > depends on the system console for line editing and history, so even if > we force interactive mode via `python -i`, the UI is horrible without > a console. And that's why the pseudo-tty system is vital to making things make sense. On Unix-like platforms, a tool like ssh can connect a program to something that it perceives as a TTY, and then take the contents elsewhere. It's a consistent system that works with any program. Oh, and, well, GNU Readline is just a smidge better than the default Windows line editing, too... ChrisA -- https://mail.python.org/mailman/listinfo/python-list