假设我运行cmd.exe并ping本地主机。之后,我再次ping localhost,但是我单击进入窗口,并且ping停止,直到按Enter为止。
当我单击窗口时会发生什么?它会中止流程还是其他?我附上了屏幕截图,以澄清此问题。
注意:实际上,我并不是单击鼠标,而是使用鼠标拖动鼠标,这会在窗口中创建一个白框,如屏幕截图所示。
编辑:进一步说明:我真正想知道的是拖动窗口是否停止cmd进程?
编辑:更多说明:我知道我正在使用快速编辑,然后按Enter键复制我选择的内容。我不知道在后台会发生什么。

假设我运行cmd.exe并ping本地主机。之后,我再次ping localhost,但是我单击进入窗口,并且ping停止,直到按Enter为止。
当我单击窗口时会发生什么?它会中止流程还是其他?我附上了屏幕截图,以澄清此问题。
注意:实际上,我并不是单击鼠标,而是使用鼠标拖动鼠标,这会在窗口中创建一个白框,如屏幕截图所示。
编辑:进一步说明:我真正想知道的是拖动窗口是否停止cmd进程?
编辑:更多说明:我知道我正在使用快速编辑,然后按Enter键复制我选择的内容。我不知道在后台会发生什么。

Answers:
当您在cmd.exe窗口中选择某些文本时,该过程将在后台进行,直到下一次写入标准输出(或STDOUT,即cmd.exe窗口中显示的数据流)为止。
退出选择模式后,该过程将照常恢复。
您可以通过ping www.google.com -t在cmd.exe窗口中键入并选择输出的某些区域来进行测试。您会看到它暂停,并且当您取消选择时,输出将恢复。
编辑:根据Fran的评论,您可以使用Wireshark之类的工具来查看选择之后,活动仍然发生,然后停止。
write()但卡住了。
一旦单击“命令提示符”窗口,控制台主机将不再允许写入输出。应用程序本身一直在运行,但是没有任何内容写入屏幕。
当然,只要只有一个线程,这基本上与冻结您的进程相同。由于单线程尝试在执行更多工作之前先写一些输出。
如果运行ping -t localhost并单击进入命令提示符窗口,则可以ping.exe使用Process Explorer检查主线程的调用堆栈。

我们可以看到ping.exe试图写一些输出。它write()在C运行时库中调用。该函数有时会调用GetConsoleMode。看起来,该函数将检查用户当前是否处于标记模式,并在需要时阻止执行。
我们可以通过检查的行为,进一步证明这种行为ping与Wireshark的
运行时,ping -t superuser.com我们在Wireshark中看到以下输出:

现在,让我们在命令提示符下标记一个框。

突然,Wireshark中不再记录ping。ping不再发送任何数据包。
是的,让我们看看输出实际上是否是这里的问题!让我们将输出定向到NUL设备:

现在,不再有输出。现在,我们可以整天在框中标记文本,数据包将记录在Wireshark中。

这是因为窗口已进入标记模式。当您按Enter键时,它将选择的文本复制到剪贴板。据我所知,对此没有设置,因此,我不确定为什么当您单击窗口时会这样做。通常,您必须右键单击并单击“标记”。检查以确保键盘上没有按键卡住。
为了进一步证实该过程在“标记模式”下暂停的声明(例如,在鼠标单击或在cmd.exe窗口边框内拖动时),但仅在实例完全完成后才暂停任何操作,我提供了间接证明:
[1378:000f][2018-10-08T13:26:20] END: Verifying package "AndroidEmulator,version=26.0.0.2"
[1378:000f][2018-10-08T13:26:20] BEGIN: Verifying package "AndroidImage_ARM_API23,version=20.0.0.3"
[1378:000f][2018-10-08T13:26:20] Verifying package 'AndroidImage_ARM_API23,version=20.0.0.3'
[1378:000c][2018-10-08T13:26:26] SHA256 verification for 'AndroidImage_x86_API23,version=20.0.0.3\x86-23_r20.zip' succeeded. Hash: X
[1378:0025][2018-10-08T14:09:03] BEGIN: Verifying "AndroidImage_ARM_API23,version=20.0.0.3\AndroidSDKPrivateInstall.ps1"
[1378:0012][2018-10-08T14:09:03] BEGIN: Verifying "AndroidImage_ARM_API23,version=20.0.0.3\armeabi-v7a-23_r20.zip"
[1378:0012][2018-10-08T14:09:03] Authenticode verification returned 0x800b0003 for path: AndroidImage_ARM_API23,version=20.0.0.3\armeabi-v7a-23_r20.zip.
[1378:0012][2018-10-08T14:09:03] Retrying validation for: AndroidImage_ARM_API23,version=20.0.0.3\armeabi-v7a-23_r20.zip
[1378:000c][2018-10-08T14:09:03] Authenticode verification returned 0x800b0003 for path: AndroidImage_x86_API23,version=20.0.0.3\x86-23_r20.zip.
您正在查看Visual Studio安装的日志记录流,其中Visual Studio安装程序命令行实用程序正在验证所有已安装的工作负载。
在13:26:26,我单击了命令提示符窗口中的内部。当我按Enter键退出“标记模式”时,“输出到屏幕”将暂停到14:09:03。
现在请注意,在13:26:26之后,该过程完成以检查x86-23_r20.zip哈希,消息“ 成功。哈希:X ”并在14:09:03重新启动另一个文件,消息为“ BEGIN:正在验证” [..] AndroidSDKPrivateInstall.ps1 “
在暂停期间,Visual Studio安装程序命令行实用程序结束了对正在处理的文件的验证,并且恰好在将控件返回到控制台时,开始了新的哈希检查工作。