当pexpect会话结束时,进程会死亡

问题描述 投票:0回答:1

我正在使用pexpect在内部应用程序上运行启动命令。 start命令启动许多进程。当进程在后台逐个开始时,一切看起来都很好,但是当'start'进程完成并且pexpect进程结束时,已经启动的进程也会死掉。

child = pexpect.spawn('foo start')
child.logfile = log
child.wait()

对于这种情况,我可以使用nohup,它按预期工作。

child = pexpect.spawn('bash -c "nohup foo start"')

但是,同一个内部应用程序的安装程序也存在相同的问题,安装的一部分是启动进程。安装程序是交互式的,需要输入,因此nohup不起作用。

当pexpect会话结束时,如何防止安装程序启动的进程死亡?

注意:从标准终端会话执行时,启动和安装过程可以正常工作。它们不以任何方式与会话联系在一起。

python linux python-2.7 pexpect
1个回答
0
投票

我在文档中找不到相关内容,但在spawn命令中包含“ignore_sighup = True”选项修复了我的问题。

child = pexpect.spawn('foo start', ignore_sighup=True)
© www.soinside.com 2019 - 2024. All rights reserved.