Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[apache-talk] Re: [apache-talk] Как скопиро вать файл?



On Tue, 26 Jan 1999, Alexandre Snarskii wrote:

> On Tue, Jan 26, 1999 at 09:48:36PM +0300, Khimenko Victor wrote:
> > >> AG> hehe. joke. what if this file is open by httpd right now ?
> > >>
> > >> Hm. And really: "what if this file is open by httpd right now?". How will it
> > >> affect makeindex or mv ??? I'm really puzzled -- it's perfectly legal to
> > >> remove opened file in *nix (it's not braindead Windows but real OS after all!).
> > >> Real removing will be posponed of course but `mv -f` should work just fine !
> > >> Or I'm misunderstood something ?
> > 
> > AS> misunderstood, разумеется. Если у тебя бинарь, обратно на диск частично
>                                              ^^^^^^
> 
> i.e. страница _кода_ сброшена из vm'а. Причем не в swap, а просто 
> сброшена, потому что ее всегда можно поднять из этого файла. 
> А если этот файл можно стереть (совсем стереть, так что эту страницу
> поднимать больше неоткуда) - то оппаньки, какой-нибудь процесс на поднятии
> куска _своего же_ кода получит SIGSEGV :) 
> 
> > AS> высвопленный/выпейдженный, то имеешь шанс нарваться на file is busy.
> > AS> C файлами, которые подмаплены как read(и|или)write, как в данном
> > AS> случае, такого быть не может.
> > 
> > Ерунда все это -- куда там что высвоплено/выпейджено есть личное дело ядра и
> > никого это не касается (конечно обычно есть способы понять -- что, куда и
> > как :-). Стереть файл (не подкаталог!) можно всегда (если прав доступа хватит,
> > конечно :-) Как бы иначе можно было upgrade'ить bash, rpm, init и иже с ними ?
> 
> Командой install :) 

Насколько я понимаю, ничего подобного не надо. Система не освободит
inode, пока есть хоть один открытый файл, на него ссылающийся. Во всяком
случае, так должно быть. Попробуйте написать программку:

#include <stdio.h>
#include <fcntl.h>
main() {
char b[3]="";
int f=open("foo",O_RDONLY);
unlink("foo");
read(f,b,2);b[2]=0;
printf("b is %s\n",b);
}

и посмотреть, что будет. Файл foo создать заранее. 

> 
> rename(2)
> unlink(2)
> open(...,O_CREAT|...,...)(2)
> - вот такой последовательностью... 

Да не делает install ничего подобного. Во всяком случае у меня. Вот что он
делает:
команда:
/usr/bin/install .tcshrc /tmp (один там уже есть)

[...skip...]
stat(".tcshrc", {st_mode=0, st_size=0, ...}) = 0
stat("/tmp/.tcshrc", {st_mode=0, st_size=0, ...}) = 0
unlink("/tmp/.tcshrc")                  = 0
open(".tcshrc", O_RDONLY)               = 3
open("/tmp/.tcshrc", O_WRONLY|O_CREAT|O_TRUNC, 0600) = 4
read(3,
...и поехали

Без всяких ужимок.
-- 
frodo@xxxxxxxxxxxx	\/  There shall be counsels taken
Stanislav Malyshev	/\  Stronger than Morgul-spells
phone +972-2-6245112	/\  		JRRT LotR.
http://sharat.co.il/frodo/	whois:!SM8333


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






Спонсоры сайта:

[ Russian Apache ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"Russian Apache" includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/) See Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C) 1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.