Quando nel kernel Linux 2.6 e in NFSv3 è diventato valido open("fname", O_CREAT|O_EXCL)
? L'attuale documentazione canonica chiamata di sistema open(2)
(http://www.kernel.org/doc/man-pages/online/pages/man2/open.2.html) dice che è tutto a posto:open O_CREAT | O_EXCL su NFS in Linux?
- O_EXCL
- ...
On NFS, O_EXCL is only supported when using NFSv3 or later on kernel
2.6 or later. In NFS environments where O_EXCL support is not
provided, programs that rely on it for performing locking tasks will
contain a race condition. Portable programs that want to perform
atomic file locking using a lockfile, and need to avoid reliance on NFS
support for O_EXCL, can ...
Questa legge come se tutti i kernel 2.6 sono OK, ma la pagina man changelog (ca fine del kernel 2.6.23) ha inizio validità indicando quattro anni dopo 2.6.0 sono stati pubblicati e il Web è pieno di utenti che censurano questo utilizzo negli ultimi due anni. Mi piacerebbe usare questa configurazione sui sistemi RHEL 5 (2.6.18), ma non sono riuscito a stabilire quando è diventato veramente sicuro. Qualcuno ha una risposta definitiva?
C'è una questione di programmazione da qualche parte? – Gabe
L'avevo inteso tanto nella prima frase. Poiché la gente può fare domande su cose come 'std :: fstream :: fstream (char const *, ios_base :: openmode)' nella libreria standard C++, speravo che la libreria standard C fosse aperta, anche per quanto riguarda i non POSIX opzioni. – Jeff
Il testo di accompagnamento è stato sostanzialmente ridotto per maggiore chiarezza se si trattava della preoccupazione iniziale. – Jeff