gpt4 book ai didi

windows - 命令提示符中的 QuickEdit 模式如何以及为什么卡住应用程序?

转载 作者:可可西里 更新时间:2023-11-01 11:57:18 25 4
gpt4 key购买 nike

我最近遇到了 Windows 上命令提示符的问题,其中启用了 QuickEdit 模式,单击窗口时选择文本并挂起正在运行的程序。显然,这是已知行为——我发现了一些与之相关的问题:

应用程序如何“暂停”/“暂停”?这个过程是否类似于 *nix 上的 SIGSTOP 信号? (我也有兴趣了解为什么这个功能首先存在?这似乎不直观且危险。)

最佳答案

这在很大程度上是设计使然。当您的程序不断滚动控制台窗口的内容时,用户无法选择文本。因此,控制台主机程序只是停止读取您的 stdout/stderr 输出,您的程序将挂起,直到用户完成操作。这可以更改,您必须调用 Get+SetConsoleMode()并关闭 ENABLE_QUICK_EDIT_MODE 选项。

请注意,这种“挂起”与您在程序生成 std​​out 输出的速率远远高于控制台主机可以使用它的速率时遇到的执行暂停没有根本区别。尽管这些延迟是有限的。

这并不是用户停止程序的唯一方式,他们也可以简单地按 Ctrl+S。按 Ctrl+Q 再次恢复它。如果您足够大,那么您可能会将这些控制代码识别为 Xon/Xoff , 终端的握手字符。这才是控制台的真正含义,它是对 1970 年代终端使用方式的简单模拟。这也可以更改,您将不得不停止依赖内置缓冲控制台输入并切换到 ReadConsole() .或者通过关闭 ENABLE_LINE_INPUT 控制台选项,不确定有什么副作用,因为你没有提到任何语言运行时,你必须尝试。

当然,终止您的程序也很容易。当用户键入 Ctrl+Z 时,您会在 stdin 上获得 EOF,这应该会结束您的程序。还有 Ctrl+C 和 Ctrl+Break 可以立即终止,不管你的程序在做什么。您可以通过 SetConsoleCtrlHandler() 获得有关这些的通知但你无法阻止它。

如果默认行为危险并且危及人类健康,那么我强烈建议您聘请顾问。并且不知道这个答案是谁写的。

关于windows - 命令提示符中的 QuickEdit 模式如何以及为什么卡住应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30418886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com