我有一个C++程序,该程序可以获取Ubuntu 14.04计算机的屏幕截图。该程序使用X11库。我需要在启动时从守护程序执行此应用程序。但它返回XOpenDisplay failed。我认为是因为未加载X11服务器。加载X11服务器后,是否可以通过任何编程方式立即获取屏幕截图?

编辑:

错过了告诉别人的事情。该守护程序在启动时启动,无法获取屏幕截图。因此,启动后,我停止了守护程序,然后从终端再次启动它。然后显示相同的错误(XOpenDisplay失败)。屏幕截图和守护程序是否存在问题?

最佳答案

这不仅仅是等待X服务器启动的问题。要成功连接到它:

  • X服务器必须正在运行。
  • 程序必须知道要连接的地址,该地址通常存储在DISPLAY环境变量中。
  • 程序必须对X服务器进行身份验证,这通常是通过提供从仅对当前登录用户可读的文件中读取的X服务器cookie来进行的。

  • 如果您只是在图形 session 中启动程序,而不是在启动后独立启动程序,则满足所有这些条件。

    有多种方法可以在图形 session 中实现程序的启动。一种是将something.desktop文件放入/etc/xdg/autostart目录。您可以从那里检查其他文件的语法。

    关于c++ - 使用C++获取Linux机器的屏幕截图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34877029/

    10-15 01:26