WSLで始めるUbuntu > 第31回 ジョブコントロールについて知ろう(CTC教育サービス)
私が編集支援しているCTC教育サービスのコラム「WSLで始めるUbuntu > 第31回 ジョブコントロールについて知ろう」が公開されました。興味がある方はご覧ください。
###
前回は、シグナルについて説明しました。今回は、bashのジョブとそのコントロール方法について説明します。
ジョブコントロールとは
ジョブコントロール(またはジョブ制御)は、プロセスの実行を選択的に一時停止(サスペンド=suspend)、実行再開(レジューム=resume)する機能です。通常ログイン時にbashを使う際、対話的インタフェースを通してジョブコントールを行います。対話的インタフェースは、カーネル(OSの中枢部分)が提供する端末(ターミナルドライバ)とbashの組合せで実現されます。ジョブは、端末から実行されたプロセスを抽象化したものです。
カーネルは、現在の端末プロセスグループID(current terminal process group ID)という情報を管理しています。ある端末から実行したプロセスは、同じ端末プロセスグループに含まれ、端末からキーボードを経由したシグナルを受け取ります。このプロセスをフォアグラウンドプロセスと呼びます。バックグラウンドプロセスは、プロセスの端末グループ ID が端末グループ ID と異なるプロセスです。 このようなプロセスは、キーボードで生成したシグナルの影響を受けず、killコマンドを使用してシグナルを送信する必要があります。フォアグラウンドプロセスは端末からの読み込みが許可されますが、バックグラウンドプロセスは許可されません。バックグラウンドプロセスへ端末からの読み込みを実行しようとすると、端末からプロセスに対しシグナルSIGTTIN(もしくはSIGTTOU)が送られます。プロセスがこのシグナルを補足しない場合、プロセスは停止します。
この続きは以下をご覧ください
https://www.school.ctc-g.co.jp/columns/miyazaki/miyazaki31.html