私はkillpgシステムコールを使用する方法を学んでいます。したがって、実験のために同じpgidで2つの新しいプロセスを開始し、killpgを使用してそのプロセスを終了しようとしています。
私はsetidについて読んだので、次のことを試しました。
setsid gedit & firefox &
しかし、geditとfirefoxという2つのプロセスは2つの異なるpgidで終わります。
答え1
可能であれば、Firefoxとその中にあるいくつかのタブを開きます。次に、次のようにします。
ps o pid,ppid,pgid,sid,comm
次の内容が表示されます。
PID PPID PGID SID COMMAND
5121 25145 2628 2628 Web Content
5881 25145 2628 2628 Web Content
25145 1 2628 2628 firefox-esr
または、サブシェルを使用してバックグラウンドプロセスを作成します。
$ (sleep 100& gedit&)
$ ps o pid,ppid,pgid,sid,comm
PID PPID PGID SID COMMAND
6365 2618 6364 27631 sleep
6366 2618 6364 27631 gedit
サブシェルが必要な理由と進行状況の良い説明は次のとおりです。私の子プロセスのPGIDが親プロセスのPIDではないのはなぜですか?
また見なさい:
man credentials