【发布时间】:2018-11-20 16:02:07
【问题描述】:
我使用 XLib 和 XRand 来获取有关嵌入式系统上已连接显示器的一些信息。
class Foo {
private:
Display *_display{};
public:
Foo() {
_display = XOpenDisplay(":0.0");
}
void getSomeInfo() const {
/* Get some info with _display */
}
~Foo() {
XCloseDisplay(_display);
}
}
问题是,在创建 Foo 实例之后和调用 getSomeInfo() 之前,可以关闭 X 服务器(出于低功耗或其他目的),这会导致我的应用程序立即死亡,因为 XLib 会尝试退出应用程序以防万一的错误。
是否有任何机制,例如回调,可以让我了解 X 服务器已关闭,我不应该再使用 _display 指针?
【问题讨论】:
-
“使用 XCB 而不是 Xlib”算作答案吗?如果是这样,我可以提供这个作为答案。 XCB 从不为您调用
exit,它实际上提供了一些错误状态代码。 -
@UliSchlachter 抱歉延迟了将近 2 年 :) 我认为这算是一个答案,因为除了使用 Xcb 之外,我找不到任何其他理智的方法。请回答,我会接受。