当pexpect会话结束时,进程会死亡
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当pexpect会话结束时,进程会死亡相关的知识,希望对你有一定的参考价值。
我正在使用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会话结束时,如何防止安装程序启动的进程死亡?
注意:从标准终端会话执行时,启动和安装过程可以正常工作。它们不以任何方式与会话联系在一起。
答案
我在文档中找不到相关内容,但在spawn命令中包含“ignore_sighup = True”选项修复了我的问题。
child = pexpect.spawn('foo start', ignore_sighup=True)
以上是关于当pexpect会话结束时,进程会死亡的主要内容,如果未能解决你的问题,请参考以下文章
Qt QProcess startDetached 无法结束进程(bash 会话)
newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段