从我的python程序运行外部程序

时间:2015-01-08 15:52:02

标签: python tkinter

我有一个时钟GUI程序,我需要运行另一个python程序,但我的时钟停止或我关闭客户端程序时我得到一个已解散的过程,我需要父程序继续运行。我尝试过的是:

os.system(run my program)  "This stops the parent clock"
os.popen(run my program)  "This stops the parent clock"
subprocess.call(run my program)  "This stops the parent clock"
subprocess.Popen(run my program)  "This works but when the client is closed goes defunct"

有没有办法在不停止我的时钟的情况下运行我的外部程序而不会退出已解散的过程?

3 个答案:

答案 0 :(得分:1)

您是否尝试使用附带nohup的子进程模块?

这样的事情应该阻止sigint退出子进程

import subprocess
import os

def run_process(self,cmd):
    subprocess.Popen("nohup " + cmd, shell=True, executable='/bin/bash', 
                     stdout=open('/dev/null', 'w'),
                     stderr=open('logfile.log', 'a'),
                     preexec_fn=os.setpgrp)

run_process('ls -R ~') # Or whatever you are trying to run

答案 1 :(得分:0)

这对我有用:

导入信号

signal.signal(signal.SIGCHLD,signal.SIG_IGN)

这个有效!

答案 2 :(得分:-1)

如果要同时运行不同的程序,可以为每个子进程使用线程。

导入线程

t = threading.Thread(target = myprogram) t.start()