crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Как узнать запущен ли X-сервер?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kwisp Дата 7.4.2009, 14:29
 
Цитата(Kagami @ 7.4.2009, 15:09) *
Все просто

не думаю что все так просто. будет время уговорю товарища снимем мувиё по данному вопросу. чтоб нагдядно увидеть:)
Kagami Дата 7.4.2009, 14:09
  Если у пользователя есть право подключаться к дисплею, у него будет эта переменная окружения. Нет права - нет переменной. Все просто :) Правда возможен случай когда запущено несколько дисплеев для разных пользователей...
kwisp Дата 7.4.2009, 12:56
 
Цитата(Kagami @ 7.4.2009, 11:29) *
Если бы взглянули в документацию, то все было бы понятнее:

спасибо за экскурс в документацию :)
Цитата(Kagami @ 7.4.2009, 11:29) *
мы проверяем наличие переменной DISPLAY. Если она есть, то в конструктор пойдет true

может я не совсем понятно выазил свою мысль.
однако,
Цитата(kwisp @ 7.4.2009, 10:01) *
значение переменной не даст ничего насколько я понимаю.
она может существовать и при остановленных иксах.


короче пример из ассистента говорит нам штатной ситуации.
получатся круг систем(в смысле различных машин) на которых программа будет работать корректно существенно съужается.
для меня это ни есть хорошо.
мне надо наверняка.
+
как узнать имеются ли права подключаться к иксам?
Kagami Дата 7.4.2009, 10:57
  При штатной остановке он ее вычищает сам
Litkevich Yuriy Дата 7.4.2009, 10:50
 
Цитата(Kagami @ 7.4.2009, 14:29) *
мы проверяем наличие переменной DISPLAY
ну есть эта переменная, а X-сервер остановлен, разве такого не может быть?
Kagami Дата 7.4.2009, 10:29
  Если бы взглянули в документацию, то все было бы понятнее:
Цитата
QApplication::QApplication ( int & argc, char ** argv, bool GUIenabled )
Constructs an application object with argc command line arguments in argv. If GUIenabled is true, a GUI application is constructed, otherwise a non-GUI (console) application is created.


Таким образом, если программа запущена под иксами, мы проверяем наличие переменной DISPLAY. Если она есть, то в конструктор пойдет true и мы получим графическое приложение. Если не найдем, то у нас получится консольное приложение в котором мы выведем сообщение и выйдем. Чего может быть проще?
Litkevich Yuriy Дата 7.4.2009, 9:56
  я неочень хорошо понимаю эту тему, но примерчик из жизни в openSUSE.

Если я сидя в кедах открою, в них, консоль. Затем наберу YaST2, этот самый YaST стартанет в консоли, чего-то там напишет, а потом появится в кедах окно YaST'а.

Если же я переключу виртуальный терминал (Alt+Ctrl+Fn) и в нем наберу тоже самое, YaST запустится в этом терминале в режиме псевдографики (ncurses).

Может ковырнуть его исходники (хотя там можно все конечности сломать)
kwisp Дата 7.4.2009, 9:01
  значение переменной не даст ничего насколько я понимаю.
она может существовать и при остановленных иксах.
тут вопрос на самом деле оказался еще шире.
должен присутствовать способ узнатьв линуксе запущены ли иксы и имеет ли право программа на графическое представление. может ли рисовать?
вот переррыли с товарищем документацию пока безуспешно.
даже в коде искали что нить подобное.

могу привести из ассистента странный пример по моему:
Раскрывающийся текст
int main(int argc, char **argv)
{
#ifdef Q_WS_X11
     bool useGUI = getenv("DISPLAY") != 0;
#else
     bool useGUI = true;
#endif
     QApplication app(argc, argv, useGUI);

     if (useGUI) {
        // start GUI version
        ...
     } else {
        // start non-GUI version
        ...
     }
     return app.exec();
}


вот тут странно. проверяется с помощью #define под иксами запускаем или нет если под иксами то проверяем существует ли значение переменной "DISPLAY" потом независимо от результата создается объект QApplication который при отсутствии иксов валит программу с сообщением
Цитата
Cannot connect to X-server

и только потом происходит проверка есть ли дисплей или нет.... короче странный пример помоему.
Kagami Дата 6.4.2009, 15:45
  Поглядеть значение переменной окружения DISPLAY?
kwisp Дата 6.4.2009, 14:54
  собственно. как узнать запущен ли X-сервер на момент запуска программы???
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 18:03