端末の^Sと^Z制御文字の違いは何ですか?

端末の^Sと^Z制御文字の違いは何ですか?

CTRL-Zターミナルエミュレータを使用すると、現在実行中のプログラムを使用または停止できますCTRL-S。これらの信号の違いは何ですか?

答え1

Ctrl-Z実際、現在のフォアグラウンドプログラムを停止しますが、ターミナルエミュレータとは何の関係もありません。これは現在実行中のシェルによって処理されます。デフォルトのUnixシェルにはこの機能がないため、シングルユーザーモードで起動される最小バージョンの組み込みLinuxなどの一部のシステムでは、この機能が欠落している可能性があります。

Ctrl-S現在、フォアグラウンドプログラムを完全に停止する必要はありません。これは、オペレーティングシステムの端末コードに端末へのデータ転送を一時的に停止するように要求することです。プログラムは実際にはまだ実行中であり、出力バッファを満たさない限り、システムコールをブロックしません。ターミナル出力一時停止機能Ctrl-Sは古代機能です。実は基準テレタイプ時代にさかのぼる、すべてのUnixyオペレーティングシステムはルールに従ってサポートされていますが、無効にする(stty -ixon)または他のものに置き換えることができます。Ctrl-Sたとえば、テキストエディタやその他のインタラクティブプログラムは頻繁に再バインドされます。

停止後に再起動する方法で、追加の違いを確認できます。Ctrl-Q後でターミナル出力を再開してCtrl-S停止したプロセスを再開するには、制御シェルでコマンドを実行するCtrl-Z必要があります。fg

答え2

1 つはジョブを一時停止し、背景として設定し、もう 1 つはその位置に固定します。 Zを使用すると、端末に戻り、bgバックグラウンドで作業を続行したり、fgフォアグラウンドで続行するなどのコマンドを実行できます。 Sを使用すると、目の前に停止したプログラムが残ります。

関連情報