fsync és szkriptek

Ha jól értettem a ext4-es problémát, akkor a fájlrendszer fejlesztője szerint illene fsync-et vagy fdatasync-et hívogatni fájlok írása után a felhasználói programokban.

PHP-ben pl. nincs f*sync és (az strace szerint) nem is hív ilyesmit mondjuk lezárásnál. Perl-hez lehet fsync-et varázsolni egy CPAN-os modul segítségével, de alapesetben ott sincs ilyen függvény, és ez sem sync-el mondjuk close után. Egy bash-ben kiadott

echo x >filepath

után max. egy sync parancsot adhatok ki, ami azért elég durva.

Ezek szerint szkriptnyelvekben majdnem esélytelen a biztonságos fájlkezelés?

Hozzászólások

perl-hez van POSIX modul, abban van fsync (POSIX modul base perl resze). IO::Handle (szinten base modul) szinten tamogatja fsyncet.

Szoval a perl rendben. fdatasync() nincs hozza alapbol, de szvsz perlben az ember nem ir olyan programot, ahol az jol johetne.

jol latod, shellben csak sync van. de shellben ne is szokas teljesitmeny-kritikus dolgot irni. ha annyira fontos a sebesseg, hasznalj mas nyelvet.

De pl. shellből előszeretettel piszkálunk* konfigurációs fájlokat. Azokkal mi lesz?

Vagy nemrég dolgoztam egy PHP alkalmazáson, ami vadul hoz létre új adatfájlokat, illetve módosít konfigurációt. A ha akarnám se tudnám posix-kompatibilisre megírni, mivel nincs f*sync.

*legalábbis én szoktam.