11 января 2014 г., 16:15 пользователь Михаил Монашёв < [email protected]> написал:
> Здравствуйте, Denis. > > > Доклад больше о чтении кода и нахождения в нём ошибок, чем о > > директориях. > > В итоге идеальный код так и не родился, ибо не пробовали другие > подходы, а только решали проблемы в лоб. Тоже поход конечно. > Вначале задача казалась настолько тривиальной, что решилась за 10 минут и работала года 1.5-2 без сбоев. Потом изменились внешние условия, а потом ещё раз. > > Я просто в декабре решал ровно такую же задачу на node.js и понял , > что вполне можно обойтись mkdir-ами. > Да, уверен что можно. Тем более, mkdir работает быстрее, чем -d > > P.S. Мы пообщались с Монсом за пиццей, он рассказывал о своих > > граблях при работе с ФС. > > Ну вот, например, интересный вопрос, например: пишем два связанных > файла по мере поступления данных и тут кончается память или место на > диске или количество открытых файлов превышено или ещё какая-то > ошибка. Один файл без другого не имеет смысла. Нужны они всегда только > оба. И хорошо бы такие не полностью сохранённый файл и второй файл, > который может ещё писаться, кстати, удалить. Как это правильно > сделать? :-) > > Насколько я знаю, такая задача не имеет нормального решения. Мой дальнейший ответ будет немного не про то, но всё же может пригодиться. Я всегда работаю с записью на диск через временный файл и переименование. Это гарантирует целостность одного файла. Когда нужно гарантировать, что несколько файлов будут соответствовать друг-другу, я помещаю их в одну директорию, и переименовываю её, у этого варианта есть очевидные минусы, но для моих задач они не критичны. Вот код из Makefile, в котором это происходит: rm -rf [email protected] ./ip_from_regs.pl [email protected] rm -rf [email protected] [ -d $@ ] && mv -f $@ [email protected] mv -f [email protected] $@ rm -rf [email protected] > -- > С уважением, > Михаил mailto:[email protected] > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org >
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
