私はkillpgシステムコールの使い方を学んでいます。したがって、実験のために、同じpgidで2つの新しいプロセスを開始してから、killpgを使用してそれらを強制終了しようとします。
私はsetsidについて読んだので、次のようなことを試しました。
setsid gedit & firefox &
しかし、2つのプロセス:geditとfirefoxは2つの異なるpgidを持つことになりました。
可能であれば、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
これがサブシェルの理由と何が起こっているのかについての良い説明です: https://unix.stackexchange.com/a/139230/181255
参照:
man credentials