2013-06-03 1 views
0

У меня есть файл, который я открыл ссылку на использование fopen_sУдалить строки из текстового файла, в то время как другие файлы пытаются получить доступ к

Теперь я хочу, чтобы удалить определенные строки из файла.

Большинство рекомендаций - это скопировать строки, которые я хочу в временный файл, удалить исходный файл и затем записать строки во вновь созданный файл.

Однако у меня есть дополнительная проблема, что до 20 других систем могут пытаться получить доступ к этому файлу в одно и то же время. Они были закодированы до тех пор, пока файл не станет доступен, прежде чем добавлять/удалять свои данные.

Я волнуюсь, что как только я закрою исходный файл (чтобы удалить его), одна из других систем будет вставлять и редактировать этот файл, блокируя его в моей исходной системе.

Может кто-нибудь предложить метод, который я могу использовать в этом конкретном сценарии.

Благодаря

ответ

0

Сначала переименуйте файл (возможно, используя идентификатор процесса/нити в названии), создать временный файл в той же папке, удалить переименованный файл и переименовать временный файл обратно в исходное имя.

+0

Я вижу, поэтому сначала переименуйте файл так эффективно, что другой процесс не может его увидеть? – user1853330

+0

@ user1853330 это правильно - лучше проверить возвращаемое значение переименования, чтобы позаботиться о двух или более программах, пытающихся переименовать в одно и то же время. –

+0

Я проверяю ответ от переименования и повторного использования более 10 секунд, а затем выхожу из функции if! = 0. – user1853330

Смежные вопросы