在Windows中从命令行运行程序时,如果输入了Mark模式,则程序输出暂停,给你足够的时间来复制你需要的任何东西,然后继续执行程序。
我总是认为这只是暂停了输出流,并且程序继续落后于此。但是,我发现它似乎也“暂停”程序(或者至少阻止它通过套接字进行通信)。
我的问题是:这个“暂停”究竟意味着什么?哪些线程被暂停?是否暂停了子进程(我猜不是)?例如,如果运行Java代码,整个JVM是挂起的,还是只是主线程? Windows如何实际处理这个问题?
如果这可能是一个有点开放的问题我很抱歉,但是当QuickEdit模式开启时,我想知道关键程序有什么风险!
提前致谢
答案 0 :(得分:1)
在控制台窗口中选择文本将阻止标准输出管道。这意味着当一个线程尝试写入标准输出时,它也会阻塞,直到读取管道中的所有数据并且一切都开始再次移动。
阻止任何其他线程或子进程。
您可以使用GetConsoleSelectionInfo查看用户是否选择了文字,并可能发出警告或采取其他措施。