Ctrl-S/XOFFがプロセスに与える影響

Ctrl-S/XOFFがプロセスに与える影響

実行したときに誤ってその端末ウィンドウに-をapt upgrade送信しました。CtrlS

今、私はXOFFXON- とテレタイプマシンの新しい事実を知りましたCtrlQ

"pause" 端末に - を送信すると、Ctrl操作が続行されます。Qapt

それを読むと、受信したコマンドで何が起こるのか、それとも一般的に何が起こるのかはXOFF明らかではありません。ディスプレイの更新が停止しました。良いことですが、まだ実行中ですか?aptXOFFhtophtop

まだapt走っていますか?それとも実際にapt停止したかhtop凍結していますか?

明らかに、プロセスはまだ入力を受け取ることができるので、XOFFまだ実行中です。

何が問題なの?例えば、プログラムカウンタは、単にプログラムカウンタの増加を停止し、プログラムを停止するだけではない。

XOFFを処理するようにコマンドがプログラムされた方法によって異なりますか?基本的なLinuxコマンドに対して期待できる一般的な動作はありますか?

ノートそれこれ同様の質問には、プログラム自体に何が起こるのか言及していないので、私の質問に対する答えは含まれていません。たとえば、apt自動的に実行され続けるのか、停止/一時停止状態なのかはわかりません。

ベストアンサー1

基本的には + と + にバインドされていると は次のようになるXONことを既にご存じでしょう。XOFFCtrlSCtrlQソフトウェアフロー制御人物と原理の遺物紙印刷テレックス端末の昔。受信装置(通常は紙プリンター)が、リモート送信者が送信した入力に追いつくことができないときに使用されます。

今日、紙テレタイプは使用されなくなりましたが、隠れたアイデアは「ターミナル」のソフトウェアフレームワークに残ります(例:ここそしてこれはTTYの歴史に関する非常に良い記事です。)はもともと紙端末で使用されていたいくつかの概念を継承し、まだ実装しています。その一つは、フロー制御文字を解釈する機能です。

通常、「コンソールで」(つまり、疑似端末に接続されている)実行されているプログラムは、文字を見ることはXONできXOFFません。なぜなら、基本的には端末からキャプチャするからです。ここでの標準動作は、プログラムがXOFF印刷出力を受信するのを停止することです。プログラム自体は影響を受けず、バックグラウンドで実行され続けます。ただ、出力が再度受信されるまでユーザーに「転送」されないことですXON

プログラムを作成してこれらの入力文字を明示的に受け取るには、tcsetattr()プログラムでシステムコールを使用してフラグを介してソフトウェアフロー制御を無効にできますIXOFFたとえば、ここ)--nanoこの方法、例えば。

おすすめ記事