监视QProcess的最佳方法是什么

时间:2019-11-19 20:13:18

标签: python python-3.x pyqt pyqt5

我有一个(Linux)PyQt5应用程序,其中包含一些小部件(按钮和输入字段)和一个QProcess对象。我通过启动rxvt(1)终端仿真器并向其提供要执行的程序来开始该过程。像这样

winIdStr = str(int(self.term.winId()))
cmd = 'rxvt'
cmdOpts = []
cmdOpts.append('-bg'); cmdOpts.append('#5D6D7E')
cmdOpts.append('-fg'); cmdOpts.append('white')
cmdOpts.append('-embed'); cmdOpts.append(winIdStr)
cmdOpts.append('-e'); cmdOpts.append('./goo')
cmdOpts.append(count)
self.process.start(cmd, cmdOpts)
print(self.process.exitCode())

这在功能上正常工作。但是,我需要进行以下增强:

  1. 当前,当程序(goo)运行完成时,rxvt(1)退出。我需要保持rxvt。我认为有多种方法可以做到这一点。 A)一些终端仿真器允许标志保留窗口。我找不到rxvt的标志。因此,如果您知道这一点,那就太好了。 B)也许QProcess具有保持窗口不动的属性。 C)启用QProcess启动goo_guardian(1),它将分叉并执行goo(1),并且不会退出。有点像在DOS中暂停。
  2. 我需要监视此外部过程。我需要知道它是否正在运行,它的进程ID(以防它被楔入并且需要杀死它)。 2.1)我认为以前的1.C解决方案(带有监护人)可以帮助我解决这个问题。

感谢PyQt5社区的任何帮助。仅供参考,目标操作系统是Linux。

0 个答案:

没有答案