homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author eryksun
Recipients William.Schwartz, eryksun, ncoghlan, paul.moore, steve.dower, tim.golden, vstinner, zach.ware
Date 2021年01月19日.22:50:17
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1611096617.38.0.909218259637.issue42962@roundup.psfhosted.org>
In-reply-to
Content
> That's what Lib/test/win_console_handler.py:39 does. 
No, that script is currently broken.
SetConsoleCtrlHandler(None, False) clears the Ctrl+C ignore flag in the PEB ProcessParameters, which is normally inherited by child processes. But using the CREATE_NEW_PROCESS_GROUP creation flag always causes Ctrl+C to be initially ignored in the process. The intent is to make it a 'background' process by default, to support CMD's `start /b` option.
Win32KillTests in Lib/test/test_os.py incorrectly assumes it only has to enable Ctrl+C in the parent process. win_console_handler.py incorrectly assumes it does not have to call SetConsoleCtrlHandler(None, False). This is why test_CTRL_C_EVENT() is currently being skipped. To fix it, win_console_handler.py needs to call SetConsoleCtrlHandler(None, False).
> Isn't that what PyConfig.install_signal_handlers is supposed to do?
The C runtime's signal() function does not clear the Ctrl+C ignore flag when a SIGINT handler is set. I think Python should. It's expected behavior for POSIX compatibility.
> with self.assertRaises(KeyboardInterrupt):
> os.kill(os.getpid(), SIG)
Unless you know the current process was created in a new process group, it is not correct to call os.kill(os.getpid(), signal.CTRL_C_EVENT). You'd be better off using os.kill(0, signal.CTRL_C_EVENT) and ensuring that Ctrl+C is temporarily ignored in the parent process, if that's in your control. Also, Python 3.8 added raise_signal(), which calls C raise(), so a more reliable way to test just the signal handler is to call signal.raise_signal(signal.SIGINT). This also eliminates needing to synchronize with the console control thread.
History
Date User Action Args
2021年01月19日 22:50:17eryksunsetrecipients: + eryksun, paul.moore, ncoghlan, vstinner, tim.golden, zach.ware, William.Schwartz, steve.dower
2021年01月19日 22:50:17eryksunsetmessageid: <1611096617.38.0.909218259637.issue42962@roundup.psfhosted.org>
2021年01月19日 22:50:17eryksunlinkissue42962 messages
2021年01月19日 22:50:17eryksuncreate

AltStyle によって変換されたページ (->オリジナル) /