ctrl cとctrl zとフォアグラウンド操作

ctrl cとctrl zとフォアグラウンド操作

Ctrl+はZジョブを停止し、Ctrl+はCジョブを終了します。

なぜそんなことですか?他の方法はもっと意味がありませんか?

z@z-lap:~$ sleep 100&
[1] 4458
z@z-lap:~$ sleep 200&
[2] 4459
z@z-lap:~$ jobs
[1]-  Running                 sleep 100 &
[2]+  Running                 sleep 200 &
z@z-lap:~$ fg %1
sleep 100
^Z
[1]+  Stopped                 sleep 100
z@z-lap:~$ jobs
[1]+  Stopped                 sleep 100
[2]-  Running                 sleep 200 &
z@z-lap:~$ fg %1
sleep 100
^C
z@z-lap:~$ jobs
[2]+  Running                 sleep 200 &

答え1

Job Controlの表記法を混乱させる可能性があります。 「停止」とは、ジョブがまだ存在しているがすべてを処理する能力が保存されていることを意味します(CPUで何も処理する時間がありません)。これは正しい技術用語ではありませんが、実際には「一時停止」または「一時停止」状態です。

  • CtrlCジョブは「停止」されず、キャンセルまたは終了します。技術的には、プログラムに割り込み信号を送信して、現在実行中のタスクを中断してすぐに終了するように指示します。一部のプログラムはこの信号を聞き、終了する前に自分で緊急クリーンアップを実行します。その他は信号に応答せずに後で中断されます。

  • CtrlZ一方、タスクを「停止」します。これは信号としても行われますが、今回は「割り込み」信号の代わりに「停止」信号です。これにより、ジョブは効果的に終了し、制御権はシェルに返されますが、実際にはジョブは終了しません。これらのジョブを実行し続けるには、bgコマンドを実行して最後に停止したジョブをバックグラウンドで送信できます。その後、&最初に実行したようにバックグラウンドジョブとして実行され続けます。またfg、フォアグラウンドで最後に使用を中止した操作を再開することもできます(中断された部分から続行して再び対話できるようにする)。

関連情報