我正在创建一个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
答案 0 :(得分:1)
假设我没有遗漏任何应该有用的东西
import subprocess
p1 = subprocess.Popen(['python','B location'], stdout=None)