В Linux вы можете переименовать файл с перезаписью.Например, переименование -f file_a file_b Перезапишет file_b с file_a, и оно будет атомарным.
В OS / X кажется, что это должно было сработать, но оно глючит.Под виндой нет.В сетевых файловых системах - вероятно, нет.
Есть ли способ симулировать это поведение среди взаимодействующих процессов?
Например, если мне это нужно только в одном процессе, тогда функция атомарного переименованияМожно создать мьютекс, удалить файл, затем переименовать файл и разблокировать.Это должно быть в состоянии работать на всех платформах.
Однако в процессе все немного сложнее.Я мог бы сделать блокировку мьютекса всей машины, но это не решит проблему взаимодействия процессов на разных машинах.
Могу ли я смоделировать это с помощью файлов блокировки?Если да, то как мне сделать это надежно, чтобы в случае преждевременного завершения процесса он мог очиститься или я мог распознать файл блокировки, который больше не действителен, и удалить его?