Рассмотрим этот псевдокод и файловую систему ext4:
f = open("/tmp/new_file", "w")
write(f, "Test")
close(f)
В другом процессе я пытаюсь сразу открыть /tmp_newfile
:
Вопросы
- Может ли другой процесс открыть файл?
- Какое содержимое видит другой процесс?Это
Test
?
Ожидания
Я ожидаю, что (1) будет верным (метаданные, вероятно, синхронизированы между процессами), но (2) будет ложным (данные могут бытьс буферизацией)
Еще вопросы
Как я могу убедиться, что мои изменения в файле видны другим процессам?
flush
, кажется, работает, но это плохо сказывается на производительности, поскольку вызывает принудительную запись на диск.Есть ли что-то вроде
soft-flush
, которое делает изменения видимыми для других процессов, не сбрасывая их на диск?