コマンドを使用して Firefox を実行すると、xinit /path/to/firefox/binary
Firefox が実行中であることを示すウィンドウが開きます。
Ctrl次に+を押してコンソールに戻り、Alt+を押してFirefoxをバックグラウンドで一時停止します。F1Ctrlz
次に++を押してCtrlFirefoxに戻ります。 Firefoxが停止または応答しないと予想していますが、それでも問題なくFirefoxを使用できます。私の期待は、他のアプリをバックグラウンドで送信したときの経験に基づいています。たとえば、バックグラウンドで送信すると、ダウンロードプロセスが停止します。AltF7wget
wget
なぜこれが起こるのですか?
答え1
端末で Firefox を実行すると、Firefox はバックグラウンドに入り、端末から切り離されます。したがって、Ctrl+を押してもZFirefoxは実際に一時停止しませんxinit
。
wget
そして、ほとんどのコマンドラインプログラムにはこれらの分離された動作はありません。 GUIベースのプログラム(gedit
Firefoxの実行と分離など)はほとんどこのように動作します。
これが発生するのを防ぐためのいくつかのオプションがあるかどうかを調べました。-foreground
可能なオプション名のように見えますが、これはFirefoxウィンドウを前景にスライドさせるだけです。
答え2
Ctrl+を押すと、Zアプリケーションが一時停止し、fg
SIGCONTを使用して再起動されるまで実行が停止します(おそらくシェルまたはコマンドを介して送信されます)。bg
しかし…
あなたは走っています。xinit
いいえfirefox
。Ctrl+を押すと、Zすでに実行されている他のアプリケーションではなく、フォアグラウンドで実行されているアプリケーションにSTOP信号が送信されます。したがって、xinit
X11セッションには影響しない自分自身を中断することです。
より正確に言えば、Ctrl+を押すとZフロントにSTOP信号が送信されます。プロセスグループ。これには複数のプロセスを含めることができますが、プロセスグループの目的は、倫理的にシグナリング目的のために単一の単位で維持されることです。
Ctrl(+CとSIGINT、Ctrl+とSIGQUITにも同じことが当てはまります\。一方、端末が消えると、SIGHUPは単一のプロセス、つまりセッションリーダー、通常はシェルにのみ送信されます。
xinit
Xサーバーとクライアントを独自のプロセスグループで実行すると、セッション全体を終了することなく中断または終了できます。キャッチできるシグナルを送信すると、Xサーバーがシャットダウンされ、これによってほとんどのXアプリケーションがシャットダウンします。したがって、Ctrl+を押すとCGUIセッションは閉じますが、間接的に閉じません。すべてのクライアントに対して閉じられるわけではありません。クライアントとサーバーの両方がSIGINTを受信しました。一方、Ctrl+では特定のタスクが実行されないため、セッションは一時停止されているため、実行中の端末で他のタスクを実行したい場合に便利です。Cxinit
CtrlZxinit
xinit