Process

如何使用相同的程序組 ID 執行多個程序?

  • May 2, 2022

我正在學習如何使用 killpg 系統呼叫。所以對於一個實驗,我想用相同的 pgid 啟動兩個新程序,然後嘗試使用 killpg 殺死它們。

我讀到了setsid,所以我嘗試了類似的東西:

setsid gedit & firefox &

但是這兩個程序:gedit 和 firefox 最終有兩個不同的 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

或者使用 subshel​​l 來生成後台程序:

$ (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

這是一個很好的解釋為什麼要使用 subshel​​l 以及發生了什麼:為什麼我的子程序的 PGID 不是父程序的 PID?

另見:

man credentials

引用自:https://unix.stackexchange.com/questions/502593