我使用 XLib 和 XRand 来获取有关嵌入式系统上已连接显示器的一些信息。
class Foo {
private:
Display *_display{};
public:
Foo() {
_display = XOpenDisplay(":0.0");
}
void getSomeInfo() const {
/* Get some info with _display */
}
~Foo() {
XCloseDisplay(_display);
}
}
问题是,X 服务器可以在创建 Foo 实例之后和调用之前关闭(出于低功耗或其他目的)getSomeInfo()
,这会导致我的应用程序立即死亡,因为 XLib 会在出现错误时尝试退出应用程序。
是否有任何机制,比如回调,可以让我理解 X 服务器出现故障并且我不应该再使用_display
指针了?