Nesmazatelny soubor?

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Úterý Duben 18 15:14:25 CEST 2000


On 17 Apr 2000, Cejka Rudolf wrote:

> Pavel Kankovsky <peak na argo.troja.mff.cuni.cz> wrote:
> > To nevim, akorat jsem slysel, ze na to chce Linus udelat extra syscall,
> > detaily si nepamatuju. Ale rozhodne si nemyslim, ze nastavovat to pres
> > jmeno souboru je uplne idealni. Cely problem je v tom, ze se API snazi
> > schovat fakt, ze mezi polozkou adresare a otevrenym souborem je objekt
> > jmenem inode.
> 
> Takze treba pro stat() jsou
> 
>   int stat(const char *path, struct stat *sb)
>   int fstat(int fd, struct stat *sb)

Problem prvni varianty je ten. ze mi muze zmenit objekt, se kterym
pracuji, primo pod rukama (fligny s tim, ze si nekam, kam nikdo dalsi
nemuze, udelam hardlink, nepovazuji za rozumne reseni). Navic neni tak
uplne jasne, co delat, kdyz je jmeno symlink...aha, vynalezneme lstat().
A taky lchown(), lchmod(), lchflags()...

Problem druhe varianty je ten, ze musim mit dany soubor otevreny, coz
je chyba, kdyz to tak uplne neni soubor, ale treba nejake zarizeni.
Nebo jiz zminovany symlink.

...

> > ioctl() by se melo uplne zrusit. Co jineho s volanim "tady mas nejaky
> > pointer a delej si s nim co chces"?
> 
> Aha. Takze ho nahradime jeste horsim rozhranim ala linux-procfs...

To jsem rekl?

Cely problem je v tom, ze parametr ioctl je proste blok binarniho smeti,
o kterem nelze zvenku ani rict, jak je velky a jakou ma strukturu. Coz je
chyba, kdyz treba budu chtit volani ioctl() nekam zaznamenat, nebo treba
"teleportovat" po siti na jinou masinu, protoze budu muset prislusny kus
kodu naucit, jak ma rozumet vsem moznym ioctl(), co jich kde je.

> Ioctl muze alespon trochu ohlidat kompilator...

Nevim odkdy.

> A pro jistotu jeste zrusme printf(mgs, ...) a fcntl() - to je totiz
> uplne stejny pripad jako ioctl()...

printf() neprekracuje hranice procesu a fcntl() aspon neposkytuje takovy
prostor pro lidovou tvorivost jako ioctl().

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."




Další informace o konferenci Linux