如何从python应用程序确定X服务器/X转发是否正在运行?

2024-10-01 13:28:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个linux应用程序,它使用PyQt4作为GUI,并且只在远程会话期间使用该应用程序
ssh-XY/vnc)。在

由于某些原因,ssh可能会因为某些原因而忘记使用em>转发。在这种情况下,应用程序崩溃得很厉害(不幸的是我不得不使用一个旧的C++库,它被包装到Python中,如果应用程序崩溃,它会完全破坏用户当前的会话)。在

我不能使用其他东西,所以我的想法是在加载库之前检查X转发是否可用。但是我不知道怎么做。在

我通常使用xclock检查会话是否启用了X转发,但是使用xclock听起来像是一个大的解决方案。在

已添加
如果可能的话,我希望使用另一种方法,而不是创建一个空的PyQt窗口并捕捉异常。在


Tags: 方法用户应用程序远程linux情况原因gui
3条回答

检查是否设置了$DISPLAY环境变量-如果他们没有使用ssh -X,那么它将是空的(而不是包含类似localhost:10)的内容。在

与您的xclock解决方案类似,我喜欢运行xdpyinfo并查看它是否返回错误。在

如前所述,可以检查DISPLAY环境变量:

>>> os.environ['DISPLAY']
'localhost:10.0'

如果您愿意,您可以实际连接到显示端口以查看sshd正在监听它:

^{pr2}$

这依赖于使用端口6000+显示号的标准X配置。在

相关问题 更多 >