Каков синтаксис переменной среды DISPLAY? - PullRequest
1 голос
/ 15 октября 2019

Я пишу программу в сборке x86-64 для linux, которая создаст окно X11, используя только системные вызовы, вызванные инструкцией syscall . На основе содержимого переменной окружения DISPLAY мне нужно создать сокет tcp или unix. В руководстве по Linux "man 7 X" написано, что:

Часть имени хоста отображаемого имени должна быть пустой строкой. Например:: 0,: ​​1 и: 0.1. Будет выбран наиболее эффективный локальный транспорт.

Однако я скомпилировал пример кода C из https://en.wikibooks.org/wiki/X_Window_Programming/XCB и запустил скомпилированный исполняемый файл в GDB с измененной переменной среды DISPLAY. Когда я изменяю переменную окружения DISPLAY с DISPLAY =: 0 на DISPLAY = unix: 0 или DISPLAY = unix /: 0 или DISPLAY = unix / abc: 0, окно все еще создается. Является ли руководство linux неправильным и каков реальный синтаксис переменной среды DISPLAY?

1 Ответ

0 голосов
/ 20 октября 2019

Краткий ответ: X11 может работать на нескольких транспортных средствах. Комментарий относится к «локальному» соединению.

Длинный ответ:

Цитата, которую вы включаете, относится к «локальному» соединению. Система X11 может работать на нескольких уровнях tarnsport. В моей системе:

       local
               The hostname part of the display name should be the empty string.  For example:  :0, :1, and :0.1.  The most effi‐
               cient local transport will be chosen.

       TCPIP
               The hostname part of the display name should be the server machine's hostname or IP address.  Full Internet names,
               abbreviated names, IPv4 addresses, and IPv6 addresses are all allowed.  For  example:  x.org:0,  expo:0,  [::1]:0,
               198.112.45.11:0, bigmachine:1, and hydra:0.1.

Кроме того, многие системы поддерживают работу через сокеты Unix, которые были (по крайней мере в прошлом) более эффективными, чем соединения TCP.

...