如何在linux上使用BASH中的新进程组id生成进程
有谁能告诉我,如何在linux上使用BASH unix shell中的新进程组id生成新进程? 非常感谢你 要在新进程组中从命令提示符以交互方式运行命令,如“emacs xxx.txt”:如何在linux上使用BASH中的新进程组id生成进程,linux,unix,Linux,Unix,有谁能告诉我,如何在linux上使用BASH unix shell中的新进程组id生成新进程? 非常感谢你 要在新进程组中从命令提示符以交互方式运行命令,如“emacs xxx.txt”: setsid emacs xxx.txt & 正如链接的“linux命令setsid”中所描述的,setsid命令的行为可能令人惊讶(在我刚才使用的linux中,manpage根本没有帮助)。所以 如果要从脚本中生成命令,并在脚本退出后继续执行该命令,请将setId加倍: setsid setsid
setsid emacs xxx.txt &
正如链接的“linux命令setsid”中所描述的,setsid命令的行为可能令人惊讶(在我刚才使用的linux中,manpage根本没有帮助)。所以
如果要从脚本中生成命令,并在脚本退出后继续执行该命令,请将setId加倍:
setsid setsid emacs xxx.txt
。。。理由是:
- 当bash在脚本期间调用setsid时,setsid保留bash解释器进程的进程组id,因此: setsid emacs xxx.txt 。。。块(请参阅链接文章)。但在运行emacs之前,它确实设置了一个新的进程组
- 您可以使用“&”作为背景: setsid emacs xxx.txt& 。。。但这样会留下一个竞争条件,在后台进程到达setsid更改进程组的点之前,调用脚本可能会退出(这可能会杀死子进程)
- 因此,我们希望等待过程组更改的发生;由于 外部集合id不是流程组长,并且已由外部集合id设置了新的流程组id