cmd.exe 的快速编辑模式阻塞了应用程序

黄杰, 2019-11-21
root[a]linuxsand.info

近期出差发生了一件很有意思的事情。

经过描述

工控机上跑着一个命令行程序(该程序具备网络通信功能),它会频繁打印信息到标准输出。由于需要定期查看输出的最新信息,我们习惯按住鼠标左键拖选关键输出(此时进入了 cmd.exe 的快速编辑模式),这样就能高亮显示了,阅读起来轻松些。

看完输出后,人就走开了(此时仍然维持着快速编辑模式)。

不久,我们发现似乎程序在某个时间点,本该收到外部网络数据,但是迟迟收不到。纳闷。

于是不得不中断设备的运行,切到手动模式操作。


后来同事提及,他碰到过类似事情,最后发现在选中 cmd.exe 的输出时,会阻塞程序的运行。

我写了几行代码验证,果然如此。

import time
import sys

i = 0
while 1:
    sys.stdout.write('%d select console output\n' % i)
    i += 1
    time.sleep(1)

解决办法

拓展阅读

https://stackoverflow.com/questions/30418886/how-and-why-does-quickedit-mode-in-command-prompt-freeze-applications