Ctrl-Sのポイントは何ですか?


135

Ctrl+ Sは、Ctrl+ で再起動できる端末へのすべての出力を停止しますQ

しかし、そもそもCtrl+ Sが存在するのはなぜですか?その制御シーケンスを配置することで解決しようとしていた問題は何ですか?


5
を参照してください:linusakesson.net/programming/tty(すべて読んでください、特にフロー制御に関するセクション...)
オリビエデュラック14年

8
Ctrl-S / Ctrl-Qを使用してベーコンを何度も保存し、ほとんど機能しないシステムでエラーメッセージの暴走出力を停止して、その内容を確認しました。
DocSalvager 14年

4
注意点として、私は私の中でこれを持って.bashrc、両方の機能を無効にします:stty stop ''; stty start '';。これにより、Ctrl-Sがのエスケープ文字として使用できるようになります。screenこれはmy .screenrc:にありescape ^Ssます。これはreadline、「行の始まり」に標準のショートカットCtrl-Aを使用できることを意味します(「行の終わり」にCtrl-Eと一致し、HomeおよびEndよりも端末エミュレーションに対して脆弱です)。:D
IMSoP 14年

回答:


155

コンピューターが登場するずっと前から、テレプリンター(別名テレタイプライター、別名テレタイプ)がありました。それらは電信とほぼ同じ技術であると考えてください。ただし、キーボードとプリンターが接続されています。

コンピューターの最初の構築時にテレタイプがすでに存在し、当時のコンピューターが部屋の大きさだったため、テレタイプは最初のコンピューターの便利なユーザーインターフェイスになりました。コマンドを入力し、送信ボタンを押し、しばらく待ってから、コマンドの出力は、目の前の用紙に印刷されます。

ソフトウェアフロー制御はこの時代に始まりました。たとえば、プリンタがテレタイプがデータを受信するのと同じ速さで印刷できなかった場合、テレタイプはXOFFフロー制御コマンド(Ctrl+ S)をリモート側に送信します。 、そしてXONフロー制御コマンド(Ctrl+ Q)をリモート側に送信して、「追いつきました。続けてください」と言うことができます。

そして、この使用法はUnixでも存続します。なぜなら、現代のターミナルエミュレーターは(何らかの方法で)テレタイプをエミュレートする物理ターミナル(vt100など)をエミュレートしているからです。


29
ほとんどの場合、「用紙に印刷される」のではなく、「ファンフォールド紙のスタックに印刷される」。
ドゥブ14年

3
または、パンチテープのロールに!
mdpc 14年

2
control-Sとcontrol-Qは当初、コンピューターからの出力を開始および停止するために使用されたのではなく、他のテレタイプに接続された紙テープリーダーから使用されたとは思いません。タイムシェアリングシステムが登場するまで、テレタイプをコンピューターに接続することに大きな関心があったとは思いません。それ以外の場合、ユーザーが何かを入力するのをコンピューターが待つのは、何か役に立つことをするのに費やしていない時間です。
supercat

2
または8½ʹʹのロール紙に。
スコット14年

44
1987年に、大学で生き残った最後のテレタイプを炎上させました。それをシリアルプリンターとして使用し、35ページを連続して印刷することを余儀なくされると過熱することを認識しませんでした。過熱はただ臭いだけでしたが、熱のために紙が燃えました。それから彼らは、2ページごとにCtrl-Sを与えて、数分冷やすようにすべきだと言った。
トニー14年

25

これは、VT100端末などの制御文字です。これらの端末では、CTRL-Sで始まるスクロール機能が制限されていたため、出力をフリーズして、現在画面に表示されている内容を消去せずに表示できました。

最近の端末に表示されるほとんどすべてのものは、これらの古い端末システムをエミュレートするために配置されました。


これは私が聞いたことです(テレプリンターの答えではなく、(おそらく)これがそのような機能が維持された理由である可能性があります)。多かれ少なかれ問題がある場合、私はこの目的でCntr-Sを使用しました
リンドンホワイト14年

2
出力を開始/停止する機械的な必要性は、人間がそれを読む必要がある前に発生しました!
TripeHound

@TripeHound:実際、受信中に人間が情報を見るという特定の期待があるずっと前に来ました(ストーリーを熱心に待っていた人は、テレタイプによって受信されたように見るかもしれませんが、オペレーターは通常より良いものを持っていましたする)。
supercat 14年

21

ところで、画面に長い出力を表示している場合、出力を吐き出すコンピューターほど速く読む必要はない可能性があります。猫(またはアクティブな尻尾)でCTRL-S / CTRL-Qを使用すると、出力を停止および再開するのに非常に便利です。


25
less以上です。
dotancohen

2
@dotancohen:とても面白い。でも、more最初のUnixは(フィーチャーした後、4〜5年まで導入されていなかったcatではないcat -v)をリリースしました。また、Unixの前に他のタイムシェアリング(インタラクティブ)オペレーティングシステムがあったことにも注意してください。たとえば、RSTS
スコット14年

2
@dotancohen私は好むlessが、人々はそうであるlessmoremostそれでもまだそれ以上lessだと言う!
フォルカーシーゲル14年

1
@VolkerSiegel:紹介してくれてありがとうmost!cliでsshを介して画像ファイル(gif、jpg、png)を見ることができるプログラムを知っている偶然に、私はそれについて聞きたいです。私は現在、使用asciiviewまたはimg2txtどちらもが満足のいくものです。
dotancohen

2
@VolkerSiegel:についても感謝最も!著者が言うように:「なぜそれほど落ち着かないのか?」。Debianユーザーはapt-get install most
mivk 14年

17

紙テープリーダーを備えた古代のテレタイプでは、コントロールQを受信すると、紙テープリーダーがオンになり、キーボードから入力されたようにテープから文字が送信され始めます。Control-Sは、紙テープリーダーをオフにします。テレタイプはもともとコンピューターからのデータではなく、他のテレタイプからのデータを印刷することを意図したものであると考える場合、「ペーパーテープリーダーをオフにする」が「送信を停止するために相手に要求する」と同様に解釈される可能性があることは明らかです。

ちなみに、control-Rは紙テープパンチをオンにし、テレタイプ(またはローカルエコーが有効になっている場合はキーボードで入力)が受信したすべての文字も紙テープにパンチされます。control-Tは、紙テープパンチをオフにします。ただし、control-Sおよびcontrol-Qに関連付けられている操作とは異なり、これらの操作には最新の同等の操作がないようです。

また、control-Q / R / S / Tの元の名前はDC1 / DC2 / DC3 / DC4(「デバイスコントロール1」など)でした。歴史はわかりませんが、そのような名前は元々不特定の種類のアクションをトリガーすることを意図していましたが、DC1とDC3で人々がした最も一般的なことは、紙テープリーダーを制御することでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.