gpt4 book ai didi

c - Linux 和 C : Communicating with X server from outside of X?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:32 27 4
gpt4 key购买 nike

我正在开发一个小型服务器程序,它获取从网络接收的数据并执行各种操作。这些操作之一是打开与系统上运行的 X 服务器的连接并模拟按键。当我的服务器从 X 中的终端启动时这很好,但我希望我的程序在系统启动时作为系统服务启动,然后在客户端请求时与 X 通信。

我遇到的基本问题是,在不是从 X 内部启动的进程中调用 XOpenDisplay(NULL) 失败。据我所知,我无法从 X 外部打开 X 显示,所以我能想到的最佳解决方法是编写一个单独的程序,当用户登录到等待信号或消息的 X 时启动从服务器,然后执行请求的操作。如果此帮助程序未运行或由于某种原因失败,假设服务器可以将错误发送回客户端是完全可以的。

所以问题是:我上面描述的是最好的(尽管很乱)解决方案,还是有更好的方法?事实上,有没有办法从 X 外部打开 X 显示?谢谢!

最佳答案

“在 X 内部”只是设置 DISPLAY 环境变量的问题。您可以在任何地方执行此操作。

如果有问题的 X 服务器正在为不同的用户运行,您可能还需要处理身份验证 token ,例如 Xauthority 票证。

但是——对于您描述的用例,我强烈建议您运行自己的 X 服务器进程,独立于系统的实际显示硬件。这可能是 Xvnc如果你想以交互方式连接检查,或者一个简单的 headless 实现,或者 Xvfb如果您根本不需要显示缓冲区。这种方法还可以防止您的软件在用户登录和注销时需要重新启动,否则会出现这种情况。

关于c - Linux 和 C : Communicating with X server from outside of X?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12982559/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com