Синхронизированы ли временные файлы, созданные с помощью mkstemp
, на диск?
Функция mkstemp
не передает никакие специальные свойства открываемым файлам, которые препятствуют их синхронизации сдиск.Файловая система, в которой они создаются, может иметь такое свойство, но это не зависит от создания файла.В частности, файлы, созданные с помощью mkstemp()
, будут сохраняться в течение неопределенного времени, если не будут удалены.
Что мне нужно, так это гарантировать, что такой файл не будет загружать жесткий диск.Я не могу позволить, чтобы это было записано на диск, даже если это происходит только раз в 5 секунд.Если я не могу получить такую гарантию, я буду искать другой путь.
Насколько мне известно, даже файловые системы tmpfs не гарантируют, что их содержимое останется заблокированным в памяти, в отличие отбыть выгруженным.Они поддерживаются виртуальной памятью.Но если реальный файл сравнительно небольшой и все его страницы горячие, то они, вероятно, останутся только в памяти.
Что касается более крупной проблемы,
все работает нормальнодо тех пор, пока SELinux не включен.Но если я включаю SELinux, это предотвращает передачу файлов с клиента на композитор.Единственное решение, которое я знаю в настоящее время, - это создание временных файлов в домашнем каталоге приложения.
По умолчанию вновь созданные файлы наследуют тип SELinux своего родительского каталога.Ваши клиенты Wayland, по-видимому, не имеют достаточных прав для изменения меток SELinux создаваемых ими файлов, но вы должны иметь возможность административно создавать каталог там, где вам нравится, с меткой, соответствующей вашим потребностям.Например, вы можете создать подкаталог /dev/shm
для этой цели (при каждой загрузке), а chcon
ned иметь соответствующую метку.Если клиенты создают там свои временные файлы, они должны наследовать выбранный вами тип SELinux.