Почему графическим программам нужно назначать окно?

Зависит от того, какая детализация вам нужна. Одиночные вызовы write() должны быть атомарными (*). Но если приложение выполняет несколько вызовов записи как часть одной логической операции, другой процесс может проснуться в середине, чтобы прочитать только часть.

*) Системный вызов может вернуться после записи только части данных, это будет указано в возвращаемом значении. Но я не знаю, может ли такое произойти с локальными файлами в Linux.

Рассмотрим такую последовательность:

--task 1--                  --task 2--
write()                     ..  
..                          stat()
..                          read()
write()                        

Если две записи слева являются частью одной логической модификации, то задача 2 просто считывает только часть этой модификации.

1
13.08.2017, 15:19
1 ответ

Программы, способные подключаться более чем к одному серверу X11 одновременно, очень и очень редки. В основном это специализированные приложения, предназначенные для слежения за одним сеансом X11 и отображения результатов в другом, или что-то в этом роде. Общие приложения практически никогда не поддерживают это. Я не уверен, но я предполагаю, что многие клиентские библиотеки X11 содержат глобальные переменные и другие различные биты, связанные с предположением, что в каждом процессе будет только одно соединение X11.

Обычно это не проблема, потому что если вы хотите, чтобы приложение отображалось на двух разных дисплеях, вы просто запускаете две его копии. Проблема в том, что Firefox не поддерживает одновременный запуск двух своих копий под одной и той же учетной записью пользователя (независимо от того, находятся они на одном дисплее или нет ).

1
27.01.2020, 23:45

Теги

Похожие вопросы