Ctrl-S の利点は何ですか?

Ctrl-S の利点は何ですか?

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 で最もよく使われていたのは、紙テープ リーダーを制御することでした。

関連情報