(fwd) Re: [apache-talk] Re: [apache-talk] Re: [apache-talk] Как

Andrey Gerzhov (kittle@freeland.alex-ua.com)
Fri, 29 Jan 1999 05:55:57 +0200 (EET)

-- forwarded message --
Path: freeland.alex-ua.com!news.alexradio.kiev.ua!not-for-mail
To: apache-talk@lists.lexa.ru
Message-ID: <ABf_YhsKBM@khim.sch57.msk.ru>
From: "Khimenko Victor" <khim@sch57.msk.ru>
Date: Wed, 27 Jan 1999 00:13:13 +0300 (MSK)
Subject: Re: [apache-talk] Re: [apache-talk] Re: [apache-talk] Как
Newsgroups: alex.gated.apache.talk
Lines: 48
Xref: freeland.alex-ua.com alex.gated.apache.talk:174

In <19990126223412.A8759@anguish.transas.com> Michael Sobolev (mss@transas.com) wrote:
MS> On Tue, Jan 26, 1999 at 09:17:52PM +0300, Sergey Mokryshev wrote:
>> UNIX'ы добавляют 1-цу к количеству ссылок в i-node (hard links)
>> при открытии файла и вычитают ее при закрытии. Пока количество
>> ссылок в i-node не станет равным нулю, файл с диска стерт не
>> будет и с ним можно продолжать работать.
MS> Это на самом деле так?

Почти. Более того -- для людей, которые не общались с Windows и DOS, а "всю свою
сознательную жизнь" возились с Unix'ом (в английском используется выражение
"Unix guys" :-) это настолько естественно, что они просто не понимают, что
может быть как-то иначе -- при попытке портировать RPM в Windows в это
уперлись... Потому как обычная процедура upgrade RPM'а заключется в том,
что выполняется какая-нибудь команда типа
rpm -Uvh rpm-2.5.6-1.i386.rpm
после чего rpm запускается, стирает себя и записывает на то же место новый
исполняемый файл (ни и конечно изменяет базу -- это уж само собой). Как это
перенести в Windows -- непонятно :-(( Только вот называется это как-то типа
reference count или что-то в этом духе: во всяком случае на диск при этом
ничего не пишется и количество hard link'ов у файла от этого не меняется (иначе
всякий эффект от опции монтирования noatime отсутствовал бы :-)

P.S. В Linux'е этот файл можно даже "поймать" в /proc/<pidnum>/fd/<fdnum>
(перебрав дескрипторы) и "спасти"... Конечно такой подход сработает только
если программа "держит" файл достаточно долго...

P.P.S. BTW именно поэтому нельзя стереть подкаталог, который является текущим
для какой-либо программы: у подкаталогов вышеописанный счетчик изменяется
и при смене текущего каталога, а удалять подкаталог разрешается только тогда,
когда счетчик будет равен 2 (в Linux'е -- в некоторых других *nix'ах (обычно
старых) дело обстоит не так и путем команд
-- cut --
mkdir testdir
ln testdir testdir/newlink
cp /bin/sh testdir
rm testdir
-- cut --
можно чудно тратить память на диске впустую; иногда прямо так не проходит,
но аналогичная программа на C срабатывает; иногда такие шутки доступны только
root'у :-)

=============================================================================
= Apache-Talk@lists.lexa.ru mailing list =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =

-- end of forwarded message --

-- 
С тем, что не помешает никогда,
                                               Kittle