当命令提示符正在运行进程然后它被卡住并且进程也在休眠时,是否有人遇到过这种情况。 然后,当我们在cmd窗口中按Enter键时,过程继续。
有什么方法可以避免这种情况吗? 或者可以处理吗?
答案 0 :(得分:9)
其他答案是错误的! Windows控制台有一个单独的模式,称为“标记模式”,用于选择文本。在这种模式下,屏幕将被冻结,文本将进入缓冲区,如果缓冲区已满,则会阻止正在运行的进程
如果启用了快速编辑模式(默认为disabled in older Windows但为enabled in Windows 10),则在控制台窗口中单击将激活标记模式并得到您观察到的结果
很容易意外单击控制台并停止命令。当您按 Enter 或 Esc 时,所选文本将被复制到剪贴板,并且退出标记模式,因此该过程将再次运行。 优先级在这里绝对无关紧要,因为如果缓冲区已满,则无论优先级如何,该过程将永远被阻塞直到退出标记模式。有一些输入时,控制台不会更改优先级。尝试打开一个以最高优先级输出大量数据的应用程序,然后单击控制台,即使CPU处于空闲状态,该应用程序仍会无限期被阻止
以下是Windows 8控制台中QuickEdit模式设置的示例:
要解决此问题,如果不需要,可以禁用快速编辑模式。在这种情况下,复制将更加麻烦,因为您必须打开上下文菜单,然后选择 Edit> Mark 。如果您正在编写自己的控制台应用程序,也可以通过将ENABLE_QUICK_EDIT_MODE
设置为SetConsoleMode()
来禁用QuickEdit模式
答案 1 :(得分:1)
今天,在执行包含TFSBuild的批处理文件时发生在我身上。 我已经收到来自TFSBuild的电子邮件通知,通知它成功,但是不知何故该批处理文件没有进行到下一行。
我等了1个小时。
我按Enter键,将其标记为Edit等,但这些都不起作用。
然后,我按Ctrl+C
尝试终止该批处理文件。
当询问我是否要终止时,我输入了N
。
奇怪的是,此后继续处理批处理文件。
答案 2 :(得分:0)
如果其他进程正在吸取所有周期并且具有更高的prio,那么您的进程可能会停止。用户输入可能只是给它一个prio提升,所以它再次启动。
答案 3 :(得分:0)
我将调用程序的行更改为:
start /hight <path-to-program> <params>
这意味着以较高的优先级启动程序。它更快,并且不需要您在执行过程中按任何键