<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">11 января 2014 г., 16:15 пользователь Михаил Монашёв <span dir="ltr"><<a href="mailto:postmaster@softsearch.ru" target="_blank">postmaster@softsearch.ru</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Здравствуйте, Denis.<br>
<div class="im"><br>
> Доклад  больше  о  чтении  кода  и  нахождения  в  нём ошибок, чем о<br>
> директориях.<br>
<br>
</div>В  итоге  идеальный  код  так  и  не  родился, ибо не пробовали другие<br>
подходы, а только решали проблемы в лоб. Тоже поход конечно.<br></blockquote><div>Вначале задача казалась настолько тривиальной, что решилась за 10 минут и работала года 1.5-2 без сбоев. Потом изменились внешние условия, а потом ещё раз.<br>
<br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Я  просто  в  декабре решал ровно такую же задачу на node.js и понял ,<br>
что вполне можно обойтись mkdir-ами.<br></blockquote><div>Да, уверен что можно.<br></div><div>Тем более, mkdir работает быстрее, чем -d<br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<div class="im"><br>
> P.S.  Мы  пообщались  с  Монсом  за  пиццей,  он рассказывал о своих<br>
> граблях при работе с ФС.<br>
<br>
</div>Ну  вот,  например,  интересный  вопрос, например: пишем два связанных<br>
файла  по  мере поступления данных и тут кончается память или место на<br>
диске  или  количество  открытых  файлов  превышено  или  ещё какая-то<br>
ошибка. Один файл без другого не имеет смысла. Нужны они всегда только<br>
оба.  И  хорошо  бы такие не полностью сохранённый файл и второй файл,<br>
который  может  ещё  писаться,  кстати,  удалить.  Как  это  правильно<br>
сделать? :-)<br>
<div class=""><div class="h5"><br></div></div></blockquote><div>Насколько я знаю, такая задача не имеет нормального решения.<br><br>Мой дальнейший ответ будет немного не про то, но всё же может пригодиться.<br><br>Я всегда работаю с записью на диск через временный файл и переименование.<br>
Это гарантирует целостность одного файла.<br><br>Когда нужно гарантировать, что несколько файлов будут соответствовать друг-другу, я помещаю их в одну директорию, и переименовываю её, у этого варианта есть очевидные минусы, но для моих задач они не критичны.<br>
<br>Вот код из Makefile, в котором это происходит:<br>rm -rf $@.tmp
<br>./<a href="http://ip_from_regs.pl">ip_from_regs.pl</a> $@.tmp
<br>rm -rf $@.bak
<br>[ -d $@ ] && mv -f $@ $@.bak
<br>mv -f $@.tmp $@
<br>rm -rf $@.bak
<br><br><br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=""><div class="h5">
--<br>
С уважением,<br>
 Михаил                          mailto:<a href="mailto:postmaster@softsearch.ru">postmaster@softsearch.ru</a><br>
<br>
--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</div></div></blockquote></div><br></div></div>