私はプロセスグループとシェルを議論する教科書を読んでいましたが、次のように言いました。
Unixシェルは、タスク抽象化を使用して単一のコマンドラインを評価した結果生成されたプロセスを表します。どの時点でも、最大1つのフォアグラウンドジョブとゼロ以上のバックグラウンドジョブがある可能性があります。たとえば、入力すると、
linux> ls | sort
Unixパイプで接続された2つのプロセスで構成されたフォアグラウンドタスクが作成されます。 1 つは ls プログラムを実行し、もう 1 つは sort プログラムを実行します。シェルは、ジョブごとに別々のプロセスグループを作成します。
フォアグラウンドジョブにはプロセスID(pid)とプロセスグループID(pgid)があり、両方が20であることがわかります。
私の質問は次のとおりです
Q1 - プロセスグループもタスクと見なすことができると聞きましたが、図の前景タスクにはなぜプロセスIDがありますか?私が理解しているのは、プロセスは実行プログラムのインスタンスであり、プロセスグループはメンバープロセスで構成されているため、プロセスグループはほぼ抽象的な概念ですが、どのように概念が実行プログラムのインスタンスになるのですか?
Q2-Iはまた、慣例的に、プロセスグループのプロセスグループIDがプロセスグループの最初のメンバーのプロセスIDと同じであるという情報を受け取りました。では、図の最初のメンバー(サブプロセス)のpidが21なので、フォアグラウンドジョブのpgidは21でなければなりませんか?
答え1
図では、プロセスグループの概念は円の代わりに破線の四角形で示されています。円はすべてプロセスを表し、「アクション」は各グループの最初のプロセスです。
バラよりプロセスグループIDはどのように設定されますか?もっと学ぶ。