0

我想将我的 cmd.com 窗口置于 Control-C 不会向 Python 生成 SIGINT 信号的模式(如果重要,则为 ActiveState)。

我知道我可以使用信号模块来处理 SIGINT。问题是处理 SIGINT 为时已晚;当它被处理时,它已经中断了一个系统调用。

我想要与 *nix“原始”模式等效的东西。只需让输入排队,当我的应用程序可以安全地读取它时,它就可以了。

令人发指的是, msvcrt.getch() 似乎将 Control-C 作为一个字符返回。但这仅在程序被 getch() 本身阻止时才有效。如果我在另一个系统调用中(睡眠,只是举个例子),我会得到 SIGINT。

4

1 回答 1

4

您需要调用win32 API 函数SetConsoleCtrlHandler,第一个参数为NULL (0),第二个参数为TRUE (1)。如果您已经在使用 pywin32,则 win32.SetConsoleCtrlHandler 可以满足此目的,否则 ctypes 应该可以工作,特别是通过ctypes.windll.kernel32.SetConsoleCtrlHandler(0, 1)/

于 2009-08-07T05:51:10.343 回答