pexpect会话结束时进程死亡

时间:2018-10-08 15:01:51

标签: python linux python-2.7 pexpect

我正在使用pexpect在内部应用程序上运行启动命令。 start命令启动许多进程。当这些进程在后台一个接一个地启动时,一切看起来都不错,但是当“启动”进程完成并且预期进程结束时,已经启动的进程也会消失。

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

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

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

但是,对于具有相同问题的同一内部应用程序,也有一个安装程序,安装的一部分是启动进程。安装程序是交互式的,需要输入,因此nohup无法正常工作。

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

注意:从标准终端会话执行时,启动和安装过程可以正常工作。它们不以任何方式绑定到会话。

1 个答案:

答案 0 :(得分:0)

我在文档中找不到很多,但是在spawn命令中包含“ ignore_sighup = True”选项解决了我的问题。

child = pexpect.spawn('foo start', ignore_sighup=True)