
Ctrl+ はS端末へのすべての出力を停止しますが、Ctrl+で再開できますQ。
しかし、そもそもCtrl+ はなぜ存在するのでしょうか? その制御シーケンスを導入することで、どのような問題を解決しようとしたのでしょうか?S
答え1
コンピュータが登場するずっと前から、テレプリンター(別名テレタイプライター、テレタイプ)。電信とほぼ同じ技術ですが、何らかのキーボードと何らかのプリンターが接続されています。
コンピュータが最初に作られたときにすでにテレタイプが存在し、当時のコンピュータは部屋ほどの大きさだったため、テレタイプは最初のコンピュータの便利なユーザー インターフェイスになりました。コマンドを入力し、送信ボタンを押してしばらく待つと、コマンドの出力が目の前の紙に印刷されます。
ソフトウェアフロー制御この時代に始まったものです。たとえば、プリンタの印刷速度がテレタイプがデータを受信する速度に追いつかなかった場合、テレタイプはリモート側に XOFF フロー制御コマンド ( Ctrl+ S) を送信して「今は送信を停止してください」と伝え、次にリモート側に XON フロー制御コマンド ( Ctrl+ Q) を送信して「追いつきました。続けてください」と伝えることができました。
そして、この用法はUnixでも生き残っている。なぜなら、現代の端末エミュレータは物理的な端末をエミュレートしているからだ(VT100)自体は(ある意味で)テレタイプを模倣していました。
答え2
これは、VT100 端末などの時代からある制御文字です。これらの端末では、スクロール機能が限られていましたが (あったとしても)、CTRL-S を使用すると、出力をフリーズして、画面に現在表示されている内容を消去せずに表示できました。
現代の端末で見られるほとんどすべてのものは、古い端末システムをエミュレートするために導入されました。
答え3
ところで、画面に長い出力をリスト表示している場合、出力を吐き出すコンピュータと同じ速さで読み取ることができない可能性があります。cat (またはアクティブなテール) で CTRL-S/CTRL-Q を使用すると、出力を停止および再開するのに非常に便利です。
答え4
紙テープ リーダーを備えた昔のテレタイプでは、コントロール + Q を受信すると紙テープ リーダーがオンになり、キーボードで入力したかのようにテープから文字が送信され始めます。コントロール + S は紙テープ リーダーをオフにします。テレタイプは元々、コンピューターからのデータではなく、他のテレタイプからのデータを印刷するためのものであったことを考慮すると、「紙テープ リーダーをオフにする」が「相手側に送信を停止するように要求する」に類似していると解釈できることは明らかです。
ちなみに、control-R は紙テープ穿孔機をオンにし、テレタイプで受信したすべての文字 (または、ローカル エコーが有効になっている場合はキーボードで入力した文字) も紙テープに穿孔されます。control-T は紙テープ穿孔機をオフにします。ただし、control-S および control-Q に関連付けられた操作とは異なり、これらの操作には現代に相当するものはないようです。
また、control-Q/R/S/T の元の名前は DC1/DC2/DC3/DC4 (「デバイス コントロール 1」など) でした。歴史はよくわかりませんが、このような名前から、元々は何らかの不特定のアクションをトリガーすることを目的としていたことがわかりますが、DC1 と DC3 で最もよく使われていたのは、紙テープ リーダーを制御することでした。