web-dev-qa-db-ja.com

同じプロセスグループIDで複数のプロセスを実行するにはどうすればよいですか?

私はkillpgシステムコールの使い方を学んでいます。したがって、実験のために、同じpgidで2つの新しいプロセスを開始してから、killpgを使用してそれらを強制終了しようとします。

私はsetsidについて読んだので、次のようなことを試しました。

setsid gedit & firefox &

しかし、2つのプロセス:geditとfirefoxは2つの異なるpgidを持つことになりました。

1
alkabary

可能であれば、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
1
user147505