Предположим, что один процесс делает это: mv
большой файл в целевой каталог
Другой процесс следит за этим файлом в целевом каталоге, потому что он хочет как можно скорее прочитать его содержимое. Гарантирует ли файловая система, что второй процесс «видит» файл только тогда, когда он полностью доступен?
Я просмотрел страницу руководства для mv
но никаких гарантий не увидел ...
Это будет во многом зависеть от того, находятся ли исходный и целевой файлы в одной файловой системе (в этом случае rename(2)
is done, † который настолько атомарен, насколько это возможно) или другая файловая система (совсем не атомарная, и процесс может легко увидеть неполный файл, особенно если система, сеть или файловая система медленные).
† на основе strace
из mv
Я делал это несколько лет назад в Linux, поэтому YMMV с разными реализациями mv
.