rename()
является атомарным (в Linux), поэтому я не думаю, что вам нужно беспокоиться об этом
атомарность обычно гарантируется в операциях, связанных с обработкой имени файла; например, для переименования «спецификация требует, чтобы действие функции было атомарным», то есть при переименовании файла из старого имени в новое, ни при каких обстоятельствах вы никогда не должны видеть эти два файла одновременно.
сбой питания в середине операции rename () не должен оставлять файловую систему в «странном» состоянии, так как имя файла недоступно, поскольку его метаданные повреждены. (т. е. либо операция потеряна, либо операция зафиксирована.)
Источник
Итак, я думаю, вам следует беспокоиться только об ошибке.
Если вы действительно хотите быть в безопасности, fsync()
также сбрасывает метаданные (в linux), чтобы вы могли fsync
каталог и файл, который вы хотите убедиться, что они присутствуют на диске .