*unix 命令行下的 Ctrl-S 到底有什么用?

*unix 命令行下的 Ctrl-S 到底有什么用?

Chris Yue No Comment
Posts

使用过 *unix 系统命令行的小伙伴,特别是用惯了 Windows 系统保存功能的小伙伴,可能有过这样的遭遇:在命令行下不小心按到了 Ctrl-S 组合键,然后命令行界面就瞬间卡住了……然后就没有然后了……是命令行程序出 bug 了吗?重新启动命令行吧。也许有的小伙伴多一个心眼,怎么可能一个 Ctrl-S 就能把命令行搞挂,一定有什么办法可以恢复。的确是这样的,如果有上网查询过,其实很快能查到通过 Ctrl-Q 是可以恢复的。

不过话说回来,这个 Ctrl-S 和 Ctrl-Q 到底有什么用呢?如果你更进一步做一些简单的实验,就可以发现 Ctrl-S 其实根本也没有将运行的程序暂停(所以网上有些说法是不准确的),只是将显示暂停了而已。这……是有什么很厉害的用途吗?为啥感觉毛用都没有呢?

要想解答这个问题,也只能从计算机输入输出的历史着手了。通过网上的查询,从一些老一辈程序员的言论中,我得到了答案。虽然最后发现也不是什么很厉害的事情,但作为考古来看还是挺有意思的。

在八十年代,那个时候计算机的显示速度是很慢的,慢到什么程度呢?这么说吧,那个时候计算机的显示结果,居然还有不用显示器而只用打印机的。想象一下,你执行了一段程序,程序的运算结果通过一台打印机不断打印给你看……听起来是不是就很不环保。但实际上程序的输出结果也不一定你都得关心,可能你只关心最后的结果,所以当时有些厂商就设定了终止/恢复显示的信号/指令,也就是我们今天的主角:Ctrl-S/Ctrl-Q。

那个时候有这个功能,还是非常重要的。不知道在什么地方我就看到一个老程序员一段悲惨的经历:当时他就在用这种打印机出结果的显示设备,然后他的同学告诉他,最少两个小时就得 按一次 Ctrl-S,但当时他并没有很在意这句话,结果打印机因为长期运行,居然过热,然后……

把~纸~点~着~了~

再对比一下现在的各种高科技显示器,是不是立马就有一种很幸福的感觉……

如今我们肯定是不再会有这种遭遇,但这个功能却在很多操作系统上依然保留了下来。所以现在看来,这个功能真的是毛用都没有,除非你想装电脑死机,而可以不好好工作。

最后再教大家一个小常识:如果你不想再在命令行误按 Ctrl-S,又或者比如你想在 vim 里设置 Ctrl-S/Ctrl-Q 快捷键(因为终端先处理了 Ctrl-S 和 Ctrl-Q 信号,所以在 vim 里看不到自己设置的 Ctrl-S/Ctrl-Q 的效果),可以通过使用以下命令关掉显示状态控制功能:

*unix 命令行下的 Ctrl-S 到底有什么用? by Chris Yue is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

微信赞赏码

文章不错,我要帮站长分担建站费!
天使投赏人

发表评论

+ 60 = 64