Я использую 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
?