web-dev-qa-db-ja.com

unix \ Linuxアプリケーションに対するCTRL + Zの効果は何ですか

私は好奇心旺盛で、CTRl + Zの動作が正確には何であるかについて混乱していました。

プロセスがフォアグラウンドで実行されていて、Ctrl + Zキーを押すと、バックグラウンドに戻ります。

しかし正確には何が起こりますか。

それは仕事を続けているのか、それとも中断されていたのか、それがその時点で止まったのか。

そしてそれがその時点で止められれば、そしてバックグラウンド・ジョブの意味は何ですか。

78
Kumar Alok

「バックグラウンドジョブ」はユーザーと対話していないものです - それはttyを制御しません、そしてそれはただそれをします(一般に静かに)。フォアグラウンドジョブはその逆で、ユーザーと対話するためのttyの制御を保持します。

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

64
mah

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

あなたはこれをkill -TSTPkill -CONTでエミュレート/複製することができます(名前にかかわらずkillが指定されたシグナルをあなたのプロセスに送るので!)

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

詳しくは こちら をご覧ください。

53
Brian Agnew

このコマンドを検討してください。私のラップトップで4.5秒:

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

押すとき Ctrl+Z計算は中断されます。 fgを使用してフォアグラウンドで計算を再開するか、bgを使用してバックグラウンドで計算を再開するオプションがあります。後者は、実行するのとほぼ同じです。

echo 2^10000000 | bc -lq | wc -c &
15
Bolo

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

詳しくは http://linuxreviews.org/beginner/jobs/ をご覧ください。

9
akluth