在Python中,如何在原始数据库关闭时在新的Python进程中生成

时间:2015-10-07 18:52:39

标签: python background-process

我正在创建一个python程序(称为A),当程序收到Terminate Signal时,它会启动一个不同的python程序来运行(称为B)。当A程序关闭时,B程序仍然需要在后台运行。

这是我为A写的程序中的清理功能的一部分。此外,我无法对B进行任何更改。(B是其他人的项目,不允许改变它只是建立在它之上)

我一直在寻找使用Popen或os.spawn函数,当它收到SIGTERM或SIGINT信号时,却收到错误。 当我尝试os.spawn时,它给了我一个错误,说它无法找到文件名' B.py programArgs',它认为progarmArgs是文件名的一部分。

任何想法我能做什么。

代码是这样的:

def main():
    signal.signal(signal.SIGINT, onExit)
    signal.signal(signal.SIGTERM, onExit)

def onExit(sig, frame):
    pid = os.spawnl(os.P_NOWAIT, "usr/bin/python3", "python3", "/home/pi/filename", " programArg" )

然后它给了我错误:

Python3: can't open file '/home/pi/filename progarmArg': [Errno 2] No such file or directory

1 个答案:

答案 0 :(得分:1)

假设我没有遗漏任何应该有用的东西

import subprocess

p1 = subprocess.Popen(['python','B location'], stdout=None)