[英]How to spawn process on linux by using new process group id in BASH
任何人都可以建議,如何在BASH unix shell中使用新進程組ID在linux上生成一個新進程? 非常感謝!
要在新進程組中從命令提示符運行命令,例如“emacs xxx.txt”,即以交互方式運行:
setsid emacs xxx.txt &
如鏈接的“linux命令setsid”中所述,setsid命令行為可能令人驚訝(在我剛才使用的linux中,聯機幫助頁根本沒用)。 所以...
如果要從腳本中生成命令並在腳本退出后繼續執行命令,請將setsid加倍:
setsid setsid emacs xxx.txt
......理由是:
當bash在腳本期間調用setsid時,setsid會保留bash解釋器進程的進程組ID,因此:
setsid emacs xxx.txt
...塊(參見鏈接文章)。 但它確實在運行emacs之前設置了一個新的進程組
你可以用'&'來背景:
setsid emacs xxx.txt&
...但是這會留下一個競爭條件,其中調用腳本可能會在后台進程到達setsid更改進程組(可能會終止子進程)之前退出
即當我們將setsid加倍時,序列是:
在腳本中 ,如果要與命令通信並等待它退出 ,請參閱bash聯機幫助頁中的subprocess。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.