Я думаю, что я нашел, что должно происходить в соответствии с "семантикой ввода / вывода POSIX", и это то, что после каждой записи данные гарантированно будут зафиксированы, и поэтому любое последующее открытие / чтение будет видетьданные всех предыдущих записей.
Вот комментарий к спецификации:
"То есть записи должны быть строго согласованными, то есть write () требуется для блокировки приложениявыполнение до тех пор, пока система не сможет гарантировать, что любой другой вызов read () увидит только что записанные данные "(ref: https://www.nextplatform.com/2017/09/11/whats-bad-posix-io/)
. Возникает вопрос, какова цель flush ()Если каждая запись фиксирует данные перед возвратом? Я вижу, что это, кажется, недоразумение с моей стороны - поскольку POSIX имеет fflush () (не flush) и fflush () применяется к потокам, а не к файлам.
FYI myпутаница возникла из-за того, что я предполагал, что операторы FUSE отображаются на файловые операции POSIX, а у FUSE есть оператор сброса, поэтому я предполагаю, что FUSE не обязательно соответствует POSIXмуравей написать ()?Это имеет смысл разрешить некоторым реализациям FUSE возвращаться до фиксации данных, если это нецелесообразно (например, по соображениям производительности).Я размышляю там, поэтому любые комментарии по этому поводу будут оценены.