problem s: rm -rf
Jan Kara
jack na ucw.cz
Pátek Listopad 30 12:10:47 CET 2001
Ahoj,
> pri spusteni prikazu (volano v c-ckovem kodu f-ci system())
> mi pokazde volani:
> rm -rf abcdef
>
> vypise hlasku:
> rm: cannot remove directory `abcdef': Directory not empty
>
> zrejme je to tim, ze v danem adresari nejsou jeste vsechny soubory uzavreny,
> nicmene tento adresar po tomto volani obsahuje nejaky soubor, napr:
> .nfs0013145c0000003d
>
> pokud volam rm -rf podruhe, vse probehne tak jak ma.
> Nevim v cem je chyba, vsechny soubory (doufam) regulerne uzaviram. Je
> mozne ze f-ce fclose nezavre soubor okamzite, ale az za nejakou dobu?
> Da se to nejak obejit, aby rm -rf smazala i jeste otevrene soubory? Da se v
> c-ckovem
> programu volat nejakou f-ci (mimo system("rm -rf...")), aby ta zpusobila
> vymazani
> obsahu spec. adresare i se vsemi (jeste otevrenymi) soubory?
Obecne na unixovych systemech neni problem smazat otevrene soubory.
Problem je pouze v tom, ze to cele bezi na NFS, coz je dost podstatne. '.nfs...'
soubor si vytvori NFS, pokud se mu nekdo pokusi smazat dosud otevreny soubor (tedy
presneji NFS v tomto pripade soubor nesmaze, ale pouze ho prejmenuje na toto divne
jmeno). Je otazka, jaky soubor tedy je v mazanem stromu otevreny - treba
pokud by v mazanem stromu byl shell, rm nebo nejaky jiny bezici program, tak je
to jasne... Muzete v programu zkusit zjistit, co soubor '.nfs...' obsahuje.
Honza
Další informace o konferenci Linux