Зависит от того, какая детализация вам нужна. Одиночные вызовы write()
должны быть атомарными (*). Но если приложение выполняет несколько вызовов записи как часть одной логической операции, другой процесс может проснуться в середине, чтобы прочитать только часть.
*) Системный вызов может вернуться после записи только части данных, это будет указано в возвращаемом значении. Но я не знаю, может ли такое произойти с локальными файлами в Linux.
Рассмотрим такую последовательность:
--task 1-- --task 2--
write() ..
.. stat()
.. read()
write()
Если две записи слева являются частью одной логической модификации, то задача 2 просто считывает только часть этой модификации.
Программы, способные подключаться более чем к одному серверу X11 одновременно, очень и очень редки. В основном это специализированные приложения, предназначенные для слежения за одним сеансом X11 и отображения результатов в другом, или что-то в этом роде. Общие приложения практически никогда не поддерживают это. Я не уверен, но я предполагаю, что многие клиентские библиотеки X11 содержат глобальные переменные и другие различные биты, связанные с предположением, что в каждом процессе будет только одно соединение X11.
Обычно это не проблема, потому что если вы хотите, чтобы приложение отображалось на двух разных дисплеях, вы просто запускаете две его копии. Проблема в том, что Firefox не поддерживает одновременный запуск двух своих копий под одной и той же учетной записью пользователя (независимо от того, находятся они на одном дисплее или нет ).