任何人都可以请教,如何通过在 BASH unix shell 中使用新的进程组 ID 在 linux 上生成一个新进程?非常感谢!
要在新进程组中运行命令,例如“emacs xxx.txt”,从命令提示符(即交互):
setsid emacs xxx.txt &
如链接的“linux 命令setsid”中所述,setsid 命令的行为可能令人惊讶(在我刚刚使用的 linux 中,联机帮助页根本没有帮助)。所以...
如果要从脚本中生成命令并在脚本退出后继续执行命令,请将 setid 加倍:
setsid setsid emacs xxx.txt
……理由是:
当 bash 在脚本期间调用 setid 时,setsid 会保留 bash 解释器进程的进程组 ID,因此:
setsid emacs xxx.txt
...块(见链接的文章)。但它确实在运行 emacs 之前设置了一个新的进程组
你可以用'&'作为背景:
setsid emacs xxx.txt &
...但这留下了一个竞争条件,其中调用脚本可能会在后台进程到达 setid 更改进程组的点之前退出(这可能会杀死子进程)
即当我们将 setsid 加倍时,序列是:
从脚本中,如果你想用命令传达并等待它退出,看到的bash手册页子。
| 归档时间: | 
 | 
| 查看次数: | 2031 次 | 
| 最近记录: |