2012-09-13 12:51:29 +0000 2012-09-13 12:51:29 +0000
88
88

unixLinuxアプリケーションでのCTRL + Zの効果は何ですか?

CTRl+Zの挙動がどうなっているのか、興味津々で混乱してしまいました。

フォアグラウンドでプロセスを実行しているときにctrl+zを押すとバックグラウンドになることは知っています。

でも、正確にはどうなるのでしょうか?

仕事を続けているのか、それとも中断されて元の場所で停止しているのか。

そして、その時点で停止した場合、バックグラウンドジョブの意味を教えてください。

回答 (4)

74
74
74
2012-09-13 12:57:13 +0000

バックグラウンドジョブ」とは、ユーザと対話しないジョブのことで、ttyを制御しておらず、(一般的には無言で)自分の仕事をしているだけのものです。フォアグラウンドジョブはその逆で、ユーザと対話するために tty の制御を保持します。

Control-Z は、最新のフォアグラウンドプロセス (tty と対話する最後のプロセス) を一時停止します (シェルが通常行うように、そのプロセスが一時停止を無視する措置を取らない限り)。これにより、通常はシェルに戻ることになりますが、そこから bg コマンドを入力することで、サスペンドされたばかりのプロセスをバックグラウンドに移動させることができます (実行を継続させることができます)。

58
58
58
2012-09-13 12:57:09 +0000

Ctrl+Z を押すと、 TSTP シグナルがプロセスに送信されます。これにより実行が停止し(カーネルはプロセスにこれ以上のCPU時間をスケジュールしません)、プロセスは処理を継続するためのCONTを待っています。

これを kill -TSTPkill -CONT を介してエミュレート/複製することができます(kill は名前に関わらず、プロセスに指名シグナルを送信します)

シェルはプロセスを「バックグラウンド」する機能を持っていますが、これはシェルとプロセスの間の関係です。プロセス自体には「バックグラウンド」や「フォアグラウンド」という概念はありません。

詳細は ここ を参照してください。

15
15
15
2012-09-13 13:02:52 +0000

私のノートパソコンでは約4.5秒かかるこのコマンドを考えてみましょう。

echo 2^10000000 | bc -lq | wc -c

Ctrl+Zを押すと計算が中断されます。fgを使ってフォアグラウンドで計算を再開するか、bgを使ってバックグラウンドで計算を再開するかの選択肢があります。後者は多かれ少なかれ実行しているのと同じです。

echo 2^10000000 | bc -lq | wc -c &
9
9
9
2012-09-13 12:57:30 +0000

ctrl+zキーを押すとプロセスが中断され、停止します。fgでは中断しているジョブをフォアグラウンドに移動させることができ、bgではバックグラウンドで実行することができます。

詳細は http://linuxreviews.org/beginner/jobs/ を参照してください。

関連する質問

6
10
10
5
3