3

在 Windows 中从命令行运行程序时,如果进入标记模式,则程序输出会暂停,让您有足够的时间复制您需要的任何内容,然后继续执行程序。

我一直认为这只是暂停了输出流,无论如何程序都会继续落后。但是,我发现它似乎也“暂停”了程序(或者至少阻止它通过套接字进行通信)。

我的问题是:这种“暂停”实际上意味着什么?哪些线程被挂起?子进程是否暂停(我猜不是)?例如,如果运行 Java 代码,是整个 JVM 暂停,还是只是主线程?Windows实际上是如何处理这个问题的?

如果这可能是一个开放式的问题,我深表歉意,但是打开快速编辑模式后,我想知道关键程序有什么风险!

提前致谢

4

1 回答 1

1

在控制台窗口中选择文本将阻塞标准输出管道。这意味着当一个线程尝试写入标准输出时,它也会阻塞,直到管道中的所有数据都被读取并且一切都重新开始移动。

这不会阻塞任何其他线程或子进程。

您可以使用GetConsoleSelectionInfo来查看用户是否选择了文本,并可能警告他们或采取其他措施。

于 2013-08-14T21:17:55.280 回答