Я хотел бы знать, если записи по одному файлу выполняются атомарно, так что запись ( "bla bla" ) и последующая запись ( "herp derp" ) в один и тот же файл никогда не приводят к перемежению, например. "bla herp bla derp". Предполагая, что эти записи происходят в разных процессах или потоках, что определяет, что происходит сначала?
Также, read() всегда возвращает данные, отражающие файл в состоянии всех предыдущих записей, полностью завершенных (независимо от того, были ли данные записаны на диск или нет)? Например, после записи ( "herp derp" ) все последующие чтения всегда будут отражать полные данные, записанные в файл, или последующее чтение иногда отражает только "herp", но не "derp" (или иногда не отражает ни одну из данных вообще)? Что делать, если чтения и записи происходят в разных процессах/потоках?
Мне не интересны параллельные стратегии доступа к файлам. Я просто хочу знать, что читать и писать делать точно.