Я реализовал операцию «безопасного сохранения», которая выглядит примерно так:
- Сохранить некоторые данные во временный файл
A
- Копировать содержимое
A
в конечный пункт назначения B
- Удалить
A
У меня есть условие гонки на шаге 3, когда Mac OS X иногда возвращается с ошибкой -47 (fBsyErr
) при попытке удалить файл с помощью FSDeleteObject
. Я полностью уверен, что я единственный, кто изменяет этот файл, и подозреваю, что ОС что-то делает (например, задачи фонового кэширования) во время попытки удалить файл, что приводит к ошибке.
Это периодически возникающая проблема: обычно вызов FSDeleteObject
работает просто отлично. В тех случаях, когда я получаю код ошибки, я хотел бы безопасно удалить файл «в более поздний момент времени», когда ОС закончит играть с ним.
Как лучше всего попытаться удалить этот проблемный временный файл?