为什么 putty 需要花费一些时间来传递在标准输出上大量输出的“ctrl +c”信号?

为什么 putty 需要花费一些时间来传递在标准输出上大量输出的“ctrl +c”信号?

每当进程在 上大量打印时stdout,如果我尝试kill通过发送信号 进行处理"ctrl + c",进程不会立即停止。但如果我在文件中重定向输出,则按下 时进程会立即停止"ctrl +c"。事实上,如果我使用 gnu screen,并且我的进程在 上大量输出,那么我也stdout无法切换。为什么会有这样的行为?tab

答案1

该过程生成输出的速度比网络和屏幕的组合显示速度快得多。

当您按下ctrl-键时C,由于所有输出造成的网络拥塞,此键序列可能需要一些时间才能到达运行该进程的服务器;并且当该进程被终止时,由于在各个地方进行缓冲,可能需要相当长的时间才能将已经生成的所有输出发送到屏幕:首先是服务器上的网络缓冲区,然后是路由器等传输中的数据包缓冲区,显示系统上的输入网络队列,然后是 ssh / screen / X windows 的输入缓冲区(取决于您在哪里运行screen)。

使用screen切换选项卡时基本上有同样的问题:ctrl-AA序列可能会在到服务器的途中延迟,然后screen可能会立即切换显示的终端,但这只有在管道中已有的所有内容显示在本地系统上后才可见。

相关内容