Python GUI不会关闭子进程

时间:2011-03-01 18:30:28

标签: python linux pygtk

我的工作要求我将我们的程序(其他人写的)从Windows移植到Linux。我已经能够成功运行Python脚本和Python脚本在Linux中调用的可执行程序。

Python脚本创建一个GUI,该脚本使用以下命令在用户完成时关闭GUI:

window.connect("destroy", self.close_application)

这是在脚本的def __init__(self):部分。创建GUI时,它将可执行文件作为一个进程调用,如下所示:

MY_EXE = 'My_Program'
EXE_ARGS = "-d -l"
sh = MY_EXE + ' ' + EXE_ARGS

self.proc = custom_popen.Popen('sh', std=custon_popen.PIPE, stdout=custom_popen.PIPE)

我遇到的问题是,当用户单击GUI上的关闭按钮时,Python脚本永远不会尝试关闭My_Program。该脚本可以正确关闭GUI。

所以,我的问题是如何将用户选择链接到关闭GUI的命令以关闭Python脚本中的My_Program进程?

感谢任何帮助。此外,如果需要注意,该脚本需要pygtk 2.0。

2 个答案:

答案 0 :(得分:0)

外部程序是从stdin读取然后退出吗?如果有,您的close_application方法是否会调用self.proc.stdout.close()

如果外部程序没有自动退出(例如:当它完成读取输入或执行简单任务时),那么您可能需要使用Popen.close()(Python 2.6+)或{{3 }}

答案 1 :(得分:0)

我能够使用os.kill()函数成功杀死应用程序。所以,我认为这对我来说已经解决了。