Re: Fwd: Re: Secret Document

Autor: Grzegorz Szyszl'o (znik_at_avalon.wbc.lublin.pl)
Data: Wed 14 Oct 1998 - 13:10:55 MET DST


Wojciech Gazda <gazda_at_fema.krakow.pl> wrote:

> Tak więc konkluzja jest następująca. Struktura systemu plików Linux-a
>utrudnia stworzenie takiej funkcji i tyle. A dlatego, że dowiązania są
>jednostrone - od nazwy i aliasów do pliku, nie odwrotnie.

dokladnie tak. jedynie utrudnia. i nie ma technicznych przeszkod, by
takiej funkcji nie zrealizowac w linux, lub innym unix.

>> ale coz. w linuxie jest pewna fajna
>> rzecz, ktora utrudnia realizacje tej funkcji. mianowicie mozna
>> skasowac otwarty plik. po skasowaniu plik nadal istnieje, az ostatni
>> proces sie od niego odetnie. wtedy fizycznie znika z systemu plikow.
>> i jak nazwiesz taki otwarty skasowany plik, ktorego nazwe uzyskasz
>> przez uchwyt ?
> Moim zdaniem to nie jest fajna rzecz tylko patologiczna. Bo właściwie
>dlaczego koniecznie można kasować otwarty plik? Ala powtórzę poraz
>1000-pierwszy od czego są kody błędów?

patologiczna ? nie sadze. przyklad. instalator wymienia plik na nowsza
wersje. plik jest otwarty, i nie da sie go usunac w HPFS. w linux (ext2 lub
dos)
da sie usunac. uchwyt pliku caly czas trzyma stary plik ktory i tak nie moze
byc skasowany, lecz plik znika z FS. wtedy jest mozliwe wgranie
nowej kopii pod ta sama nazwa. stary plik oczywiscie juz nie ma nazwy,
lecz nowy plik jeszcze nie zostal otwarty.

inny przyklad. chce zmienic nazwe jakiegos katalogu. ale inny proces
mi w nim siedzi. w os/2 nie moge zmienic nazwy. a niby to dlaczego ?
przeciez uchwyt katalogu moze caly czas wskazywac na ten sam element.
jesli proces zmieni katalog, lub sie zakonczy, to wtedy katalog jest
zwalniany, i tymczasowe dowiazanie moze byc usuniete. tak jest
w linux, i jest to bardzo wygodne.

przyklady praktyczne ? user mi siedzi na jakims pliku na serwerze ftp,
a ja chce ten plik skasowac, lub go gdzies przemiescic. kiszka, na os/2
sie nie da, na linux sie da. a jak user po userze otwiera w kolko
mi ten plik, to mogila. musze wylaczac serwis ftp zeby plik sie zwolnil,
i bym mogl zrobic co chce. w linux zmieniam plik. osoby ktore go otworzyly
wczesniej, nadal maja do niego dostep. kolejne osoby juz pliku nie widza,
bo ja go usunalem/przemiescilem. ostatnia osoba z otwartym starym uchwytem
konczy konekcje. uchwyt sie zamyka, i tymczasowe dowiazania sa usywane.
jesli to ostatnie dowiazanie, plik znika z FS. (nie nazwa pliku, lecz plik).
jest to bardzo wygodne.
analogiczna sytuacja wystepuje przy operacjach na katalogach.

>> a wiesz jak w praktyce mozesz zrealizowac taka funkcje ?
>Ja już mam w OS/2 DosQueryFileInfo... A na Linuxa, przynajmniej na razie
>z programowaniem nie przesiadam się...

mozesz przykryc kilka funkcji systemu, lub napisac ich odpowiedniki.
by w dodatkowym polu poszerzonego rekordu trzymaly nazwe otwieranego pliku.
najgorzej jesli otwarty plik jest przekazany z zewnatrz (stdin/out/err
lub przekazanie pliku przez pipe, lub fork.

>> a to tez bzdura, i to w kilka stron. niby czemu w linuxie taka funkcja
>> mialaby nie chodzic, skoro dany proces majac otwarty plik, musial tenze
>> plik jakos tam otworzyc, czyli mial do niego prawo itp/itd :)
> Tak samo argumentowałem, ale jednak nie! Dlaczego? Napisałem wyżej -
>jednostronne powiązania - z aliasów i nazw do pliku nie odwrotnie.

w FS dowiazania moga byc oczywiscie jednostronne. ale nic nie stoi na
przeszkodzie, by kernel trzymal w sobie wskazania do nazw otwartych uchwytow.
tyle ze tego oczywiscie nie ma, i trzeba robic atrape wewnatrz programu.
chociaz w praktyce ja nigdy nie spotkalem sie z potrzeba poznania nazwy pliku
otwartego uchwytu.

>Wojciech Gazda

-- 
/===================================\    oOOo      W temperaturze zera
| http://avalon.wbc.lublin.pl/~znik/ \===\__/==\   bezwzglednego swiatlo
| Grzegorz Szyszlo   mailto:znik_at_wbc.lublin.pl |   zmienia postac
\==============================================/   alotropowa   (by Znik)


To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 15:18:33 MET DST