unixLinuxアプリケーションでのCTRL + Zの効果は何ですか?
CTRl+Zの挙動がどうなっているのか、興味津々で混乱してしまいました。
フォアグラウンドでプロセスを実行しているときにctrl+zを押すとバックグラウンドになることは知っています。
でも、正確にはどうなるのでしょうか?
仕事を続けているのか、それとも中断されて元の場所で停止しているのか。
そして、その時点で停止した場合、バックグラウンドジョブの意味を教えてください。
CTRl+Zの挙動がどうなっているのか、興味津々で混乱してしまいました。
フォアグラウンドでプロセスを実行しているときにctrl+zを押すとバックグラウンドになることは知っています。
でも、正確にはどうなるのでしょうか?
仕事を続けているのか、それとも中断されて元の場所で停止しているのか。
そして、その時点で停止した場合、バックグラウンドジョブの意味を教えてください。
バックグラウンドジョブ」とは、ユーザと対話しないジョブのことで、ttyを制御しておらず、(一般的には無言で)自分の仕事をしているだけのものです。フォアグラウンドジョブはその逆で、ユーザと対話するために tty の制御を保持します。
Control-Z は、最新のフォアグラウンドプロセス (tty と対話する最後のプロセス) を一時停止します (シェルが通常行うように、そのプロセスが一時停止を無視する措置を取らない限り)。これにより、通常はシェルに戻ることになりますが、そこから bg
コマンドを入力することで、サスペンドされたばかりのプロセスをバックグラウンドに移動させることができます (実行を継続させることができます)。
Ctrl+Z を押すと、 TSTP
シグナルがプロセスに送信されます。これにより実行が停止し(カーネルはプロセスにこれ以上のCPU時間をスケジュールしません)、プロセスは処理を継続するためのCONTを待っています。
これを kill -TSTP
と kill -CONT
を介してエミュレート/複製することができます(kill
は名前に関わらず、プロセスに指名シグナルを送信します)
シェルはプロセスを「バックグラウンド」する機能を持っていますが、これはシェルとプロセスの間の関係です。プロセス自体には「バックグラウンド」や「フォアグラウンド」という概念はありません。
詳細は ここ を参照してください。
ctrl+zキーを押すとプロセスが中断され、停止します。fgでは中断しているジョブをフォアグラウンドに移動させることができ、bgではバックグラウンドで実行することができます。
詳細は http://linuxreviews.org/beginner/jobs/ を参照してください。