Есть ли способ узнать, работает ли текущий пользователь сеанса Xserver (под Linux)?Как проверить, запущен ли сервер X?
I'v начал с таких вещей, как:
ps -e | grep X
, но это не работает всегда
и еще одна вещь, которую я попытался проверяет $DISPLAY
переменная
Есть ли другие способы проверить это?
EDIT: Некоторые люди предложили использовать переменные $ DISPLAY, но что делать, если пользователь спрятал эту переменную? что, если он пытается что-то сделать и изменяет эту переменную, а затем, когда я ее проверю, он больше не отражает точное состояние системы. Нет ли конкретного способа сделать это, который всегда вернет правильный ответ?
я обнаружил, что это может быть сделано таким образом программно:
#include <X11/Xlib.h>
int main()
{ exit(XOpenDisplay(NULL) ? 0 : 1); }
$ gcc -o xprobe xprobe.c -L/usr/X11R6/lib -lX11
Но я искал способ сценария.
почему не «пс -e | grep X "всегда работает? – stephendl
И почему не работает $ DISPLAY? –
@stephendl: Я обнаружил, что в некоторых ситуациях X работает, но пользователь подключается через терминал без X @matthew: Что делать, если пользователь возится с эта переменная, и она больше не отражает фактическое состояние системы? –