[СИ] readdir()
Язык СИ
ОС UNIX
Вопрос.
Что случится, если во время чтения каталога
(readdir()) этот каталог изменится?
Кто знает прошу ответить.
Пояснение откуда взялся вопрос.
Имеется самодельный копировщик каталога (сырой).
Он рекурсивно обходит дерево и копирует
всё на другой сервер. Использую функцию
readdir(). Каталог большой:
десятки тысяч файлов и общая длина
десятки Гб.
Файлы могут меняться прямо в процессе
копирования (но не слишком часто).
Какой либо синхронизации между копировщиком
и процессами, меняющими файлы, нет.
Но и требования не очень жесткие.
Достаточно скопировать цельный файл, каким он
был до изменения, или после изменения.
Я придумал способ как это сделать.
Просто после первого большого копирования
заново проверить все файлы на дату изменения,
и те, которые менялись с момента начала большого
копирования обработать еще раз. Их таких немного,
и, значит, с ними попроще.
Затем еще раз эти немногие проверить на дату,
и так до полного удовлетворения.
Учитывая не частое изменение файлов, такой
алгоритм можно считать практически конечным.
Я уже было торжествовал победу, но тут сообразил,
что меняться-то могут не только файлы, но и
каталоги. И я не знаю, как поведёт себя функция
readdir() при этом. Пропустить несколько
только что созданных файлов допускается.
Не беда, если файлы скопированы, а вскоре
их удалили.
Но не случится ли тут чего похуже?
Ответ на:
комментарий
от xcreatepixmap
Ответ на:
комментарий
от oleg_2
Ответ на:
комментарий
от oleg_2
Ответ на:
комментарий
от xcreatepixmap
Ответ на:
И все же.
от Manhunt
Ответ на:
комментарий
от Begemoth
Ответ на:
комментарий
от oleg_2
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум readdir (2004)
- Форум readdir() (2002)
- Форум readdir и afs (2008)
- Форум Надоело opendir+readdir (2005)
- Форум readdir количество файлов (2005)
- Форум C, Pioneer и readdir() (2012)
- Форум Readdir, работа системного вызова (2011)
- Форум Гарантирована ли идентичность результатов readdir() (2016)
- Форум [Perl][Первые шаги]readdir & grep (2011)
- Форум Си (2013)