【发布时间】:2012-10-19 21:14:23
【问题描述】:
我正在开发一个小型服务器程序,该程序从网络接收数据并执行各种操作。其中一项操作是打开与系统上运行的 X 服务器的连接并模拟按键。当我的服务器从 X 内的终端启动时,这很好,但我希望我的程序在系统启动时作为系统服务启动,然后在客户端请求时与 X 通信。
我遇到的基本问题是在不是从 X 内部启动的进程中调用 XOpenDisplay(NULL) 失败。据我了解,我无法从 X 外部打开 X 显示器,因此我能想到的最佳解决方法是编写一个单独的程序,该程序在用户登录 X 时启动,等待信号或消息从服务器,然后执行请求的操作。如果此帮助程序未运行或由于某种原因失败,假设服务器可以将错误发送回客户端是完全可以的。
所以问题:我上面描述的是最好的(虽然是混乱的)解决方案,还是有更好的方法?事实上,有没有一种从 X 外部打开 X 显示的方法?谢谢!
【问题讨论】:
-
@jweyrich Gah,当我在玩 DISPLAY envvar 时,我正在分配它,然后运行我的程序,但忘记了
export并假设有其他问题。这确实有效,但这仍然意味着我假设显示实际上是:0:。