Process
如何使用相同的程序組 ID 執行多個程序?
我正在學習如何使用 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
或者使用 subshell 來生成後台程序:
$ (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
這是一個很好的解釋為什麼要使用 subshell 以及發生了什麼:為什麼我的子程序的 PGID 不是父程序的 PID?
另見:
man credentials