首页 > 解决方案 > 具有 subprocess.Popen 调用(对于 xprop )的python(打包)应用程序是否需要为其运行终端?

问题描述

我在 python 中为 linux 开发了一个应用程序时间跟踪应用程序,我使用 xprop 来获取活动窗口,然后是 PID 、窗口名称和进程名称。这个应用程序将跟踪数据发送到远程服务器,因此我使用 pyinstaller 制作了一个 linux 包。

我目前在 CentOS 7 中工作。我编写了一个服务,可以让应用程序保持打开状态(我对服务进行了所有必要的更改,以便在用户的桌面环境中运行)。

在测试服务时,我看到使用新桌面重新启动后,服务运行良好,但数据未在服务器上收集。但是一旦我打开终端,一切正常。

如果代码如下,是否需要为 subprocess.check_output / subprocess.Popen() 打开一个终端:

active_win = subprocess.check_output(["xprop", "-root", "_NET_ACTIVE_WINDOW"]).decode('utf-8').split('#')[1].strip()

或者

root = Popen( ['xprop', '-root', '_NET_ACTIVE_WINDOW'], stdout = PIPE )
stdout, stderr = root.communicate()
m = re.search( b'^_NET_ACTIVE_WINDOW.* ([\w]+)$', stdout )
if m is not None:
    window_id   = m.group( 1 )

标签: python-3.xlinuxsubprocesscentos7systemd

解决方案


推荐阅读