ベストアンサー1
端末の操作制御に関して、前景と背景が何を意味するのかを誤って理解しています。出力を表示できるかどうかに依存しません。
最終デバイス(より具体的にはライン規約)には次のものがあります。フォアグラウンドプロセスグループIDと関連付けられる。これは、ライン規約が標準モードにあるときに信号を送信し、信号にマッピングされた特殊文字の1つ(ライン規律に含まれる情報でもある)を受信するプロセスのグループを決定します。
ジョブ制御シェルは、シェルジョブを構成するプロセスにプロセスグループを割り当て、これらのプロセスグループとそれ自体のプロセスグループとの間で端末装置の前景プロセスグループを切り替えてタスク制御を行う。
デフォルトでは、これはこれらのプロセスの端末出力には影響しません。持つ単一tostop
これは、ラインルールでフラグをオンにすると(stty
またはこれらのコマンドを使用して)出力に影響します。看板が点灯します。デフォルトではありません。 (私が知っている限り、2つの例外しかありません。一部のオペレーティングシステムではデフォルトの初期設定を設定できますが、本物端末(例:シリアルデバイスFreeBSDと私のもの。vc-reset-tty
ツールは「正常」状態にリセットするとこのフラグを設定します。 )
したがって、出力を生成するシェルジョブを実行する場合〜するシェルの出力と混合されます。
オープンな選択肢はtostop
ここでは役に立ちません。出力を生成するシェル操作があります。続けて。明らかに出力中インタラクティブな進行状況を表示。端末操作制御がうまく機能しない継続的な対話型プログラム。 (逆にテキストエディタ(例)vi
とテキストファイルビューア(例)more
続けてインタラクティブ。 )オプションは、tostop
進行状況表示が他のプロセスの進行状況表示と混在するオフ、またはtostop
進行状況表示によって進行状況が更新されるたびにプログラムが停止するようにすることです。
または、閉じた手で両方の端子を使用してください。
追加読書
- プロセスグループとタスクの違いは何ですか?
- タスクとプロセスの違いは何ですか?
- シェルのプロセスグループID =フォアグラウンドジョブのプロセスグループID?
- 端末のフォアグラウンドプロセスグループを誰が変更しましたか?
- 端末から送信されたすべての信号はフォアグラウンドプロセスグループに送信されますか?
- Bashで実行されると、私のプログラムはどのプロセスグループに属していますか?
- Ctrl + CはSIGINT信号を複数のプロセスに送信できますか?
- 子プロセスは親プロセスとは異なるプロセスグループにありますか?
- SIGINTが親プロセスに送信されたときに子プロセスに伝播されないのはなぜですか?
- 抽象化、セッション、セッションリーダー、プロセスグループの目的は何ですか?
- 制御端末の目的は何ですか?
- 背景、ゾンビ、デーモン、ctty - これらの概念は関連していますか?
- …そしてたくさんもっと。