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