我的工作要求我将我们的程序(其他人写的)从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。
答案 0 :(得分:0)
外部程序是从stdin读取然后退出吗?如果有,您的close_application
方法是否会调用self.proc.stdout.close()
?
如果外部程序没有自动退出(例如:当它完成读取输入或执行简单任务时),那么您可能需要使用Popen.close()
(Python 2.6+)或{{3 }}
答案 1 :(得分:0)
我能够使用os.kill()函数成功杀死应用程序。所以,我认为这对我来说已经解决了。