sync(2)

NOME
sync, syncfs - svuota la cache del filesystem sul disco

LIBRERIA
Libreria C standard (libc, -lc)

SINTASSI
#include <unistd.h>

void sync(void);

int syncfs(int fd);

    Macro per test di funzionalità per glibc (vedere feature_test_macros(7)):

sync():
    _XOPEN_SOURCE >= 500
        || /* Sin da glibc 2.19: */ _DEFAULT_SOURCE
        || /* glibc <= 2.19: */ _BSD_SOURCE

syncfs():
    _GNU_SOURCE

DESCRIZIONE
sync() provoca la scrittura nei filesystem sottostanti di tutte le modifiche in sospeso ai metadati del file system e ai dati dei file memorizzati nella cache.

syncfs() è come sync(), ma sincronizza solo il filesystem contenente il file a cui si riferisce il descrittore di file aperto fd.

VALORE RESTITUITO
syncfs() ritorna 0 in caso di successo; in caso di errore, ritorna -1 e imposta errno in modo che indichi l'errore.

ERRORI
sync() termina sempre con successo.

syncfs() può fallire per almeno il motivo seguente:

EBADF
    fd non è un descrittore di file valido.

EIO Si è verificato un errore durante la sincronizzazione. Quest'errore può riguardare i dati scritti su qualsiasi file sul filesystem, o su metadati relativi al filesystem stesso.

ENOSPC
    Lo spazio su disco è stato esaurito nel corso della sincronizzazione.

ENOSPC
EDQUOT
    I dati sono stati scritti in un file su NFS o su un altro filesystem che non alloca spazio al momento di una chiamata di sistema a write(2), e alcune scritture precedenti non sono andate a buon fine per mancanza di spazio di archiviazione.

VERSIONI
Secondo le specifiche degli standard (per esempio, POSIX.1-2001), sync() pianifica le scritture, ma potrebbe ritornare prima che la scrittura sia stata realmente effettuata. Comunque Linux attende il completamento degli I/O, e quindi sync() o syncfs() offrono la stessa garanzia di fsync() chiamato su ogni file rispettivamente del sistema o del file system.

CONFORME A

sync()
    POSIX.1-2008.

syncfs()
    Linux.

STORIA

sync()
    POSIX.1-2001, SVr4, 4.3BSD.

syncfs()
    Linux 2.6.39, glibc 2.14.

A partire da glibc 2.2.2 il prototipo Linux per sync() è come elencato sopra, seguendo i vari standard. In libc4, libc5, e glibc 2.2.1 e precedenti era "int sync(void)", e sync() restituiva sempre 0.

Nelle versioni del kernel precedenti a Linux 5.8, syncfs() fallisce solo quando alla funzione viene passato un descrittore di file non valido (EBADF). A partire da Linux 5.8, syncfs() riporta un errore anche se non è stato possibile riscrivere uno o più inode dall'ultima chiamata a syncfs().

BUG
Prima di Linux 1.3.20, Linux non aspettava il completamento degli I/O prima di ritornare.

VEDERE ANCHE
sync(1), fdatasync(2), fsync(2)

TRADUZIONE
La traduzione italiana di questa pagina di manuale è stata creata da Goffredo Baroncelli <kreijack@usa.net>, Giulio Daprelà <giulio@pluto.it>, Elisabetta Galli <lab@kkk.it>, Marco Curreli <marcocurreli@tiscali.it> e Giuseppe Sacco <eppesuig@debian.org>

Questa traduzione è documentazione libera; leggere la GNU General Public License Versione 3 (https://www.gnu.org/licenses/gpl-3.0.html) o successiva per le condizioni di copyright. Non ci assumiamo alcuna responsabilità.

Per segnalare errori nella traduzione di questa pagina di manuale inviare un messaggio a pluto-ildp@lists.pluto.it.