gpt4 book ai didi

java - 如何在 Fedora 16 上通过守护进程登录 X Window

转载 作者:行者123 更新时间:2023-12-01 04:58:48 25 4
gpt4 key购买 nike

我在一个带有中央控制站的分布式系统上工作。在这个中央控制上我们有软件可以连接到任意数量的运行 Fedora 16 的远程计算机和一个专门的 SystemD 守护进程。连接后,控制站会向这些守护进程发送消息,以启动用于用户与中央控制站交互的各种 GUI 系统。

目前,这有一个巨大的缺点,因为这些远程计算机需要特定用户登录才能启动 GUI。该用户与运行 SystemD 守护程序的用户是同一用户。如果这些远程计算机未登录,我们会收到以下 java 错误:

无法使用“:0”作为 DISPLAY 变量的值连接到 X11 窗口服务器。

守护进程是用 Java 编写的(使用最新的 java 7),并使用以下代码来启动图形用户界面:

String command = "java -Xmx2000M -cp ...{java classes etc to run}"
ProcessBuilder pb = new ProcessBuilder(command.split("\\s+"));
pb.redirectErrorStream(true);
pb.environment().put("DISPLAY", ":0.0");
try
{
p = pb.start();
...

当用户正确登录时,这是正确的 DISPLAY 变量。守护进程本身并不知道有一个 Display,因为它启动的时候,所以我们当前在 ProcessBuilder 中设置 DISPLAY 变量

是否有某种方法可以通过 java 正确连接/登录到 X11 Window Server或通过我的守护进程的其他方式,以便这些系统在运行之前不需要手动登录。

目前,所有这些系统都会在启动时以适当的用户身份自动登录 KDE,但这不是一个非常安全的解决方案,人们倾向于随机注销它们,从而阻止它们充当远程站

最佳答案

编辑/etc/inittab,使 X 以 OS 开头。 Instructions

在您的主目录中创建文件 .Xinitrc。从它启动你的守护进程,如果你需要窗口管理器也启动它。

关于java - 如何在 Fedora 16 上通过守护进程登录 X Window,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13651438/

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