Portál AbcLinuxu, 15. července 2025 23:25
Co se stane, pokud spustím soubor, ten se nakešuje do paměti, pak ho ve filesystému změním a spustím znova ? Je nějak zaručeno, že se spustí ten aktualizovaný ?
Dík
ulink
(rm
) a nahrát nový soubor (obě operace se provedou při cp
). V tom případě je zaručeno, že se v paměti zůstane běžet nezměněná podoba procesu a při dalším spuštění se spustí aktualizovaná pododba. Pokud tě problematika zajímá blíže, hledej rozdíl mezi mmap
a fopen
.
Neřekl bych, IMHO cp
otevře soubor pro zápis (neexistuje-li, vytvoří se) a zkopíruje pro něj data:
~/tmp$ echo 1234 > link1 ~/tmp$ ln link1 link2 ~/tmp$ echo 12345678 > new ~/tmp$ ls -li link1 link2 new 66788 -rw-r--r-- 2 mike users 5 2005-08-03 17:15 link1 66788 -rw-r--r-- 2 mike users 5 2005-08-03 17:15 link2 66793 -rw-r--r-- 1 mike users 9 2005-08-03 17:15 new ~/tmp$ cp new link2 ~/tmp$ ls -li link1 link2 new 66788 -rw-r--r-- 2 mike users 9 2005-08-03 17:15 link1 66788 -rw-r--r-- 2 mike users 9 2005-08-03 17:15 link2 66793 -rw-r--r-- 1 mike users 9 2005-08-03 17:15 newKdyby to bylo tak, jak říkáte vy, musel by v
link1
zůstat původní obsah (a u link2
by se změnilo číslo i-nodu). Mé interpretaci také odpovídá fakt, že při pokusu přepsat spuštěný spustitelný soubor příkazem cp
dostanu chybu text file busy.
-f
t.j. právě v případě pokusu přepsat spuštěný spustitelný soubor. Myslel jsem, že to dělá pokaždé.
$ echo 1234 > link1 $ ln link1 link2 $ echo 12345678 > new $ ls -li link1 link2 new 54892238 -rw-r--r-- 3 hynek instrat 5 2005-08-03 17:48 link1 54892238 -rw-r--r-- 3 hynek instrat 5 2005-08-03 17:48 link2 56052908 -rw-r--r-- 1 hynek instrat 9 2005-08-03 17:48 new $ chmod -w link2 $ cp -f new link2 $ ls -li link1 link2 new 54892238 -r--r--r-- 1 hynek instrat 5 2005-08-03 17:48 link1 56253062 -rw-r--r-- 1 hynek instrat 9 2005-08-03 17:49 link2 56052908 -rw-r--r-- 1 hynek instrat 9 2005-08-03 17:48 new
$ chmod -w link2 $ ls -li link1 link2 new 54892238 -r--r--r-- 3 hynek instrat 5 2005-08-03 17:48 link1 54892238 -r--r--r-- 3 hynek instrat 5 2005-08-03 17:48 link2 56052908 -rw-r--r-- 1 hynek instrat 9 2005-08-03 17:48 new
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.