Subrutina fsync o fsync_range
Finalidad
Escribe cambios en un archivo en almacenamiento permanente.
Biblioteca
Biblioteca C estándar (libc.a)
Sintaxis
#include <unistd.h>
int fsync ( FileDescriptor)
int FileDescriptor;
int fsync_range (FileDescriptor, how, start, length)
int FileDescriptor;
int how;
off_t start;
off_t length;
Descripción
La subrutina fsync hace que todos los datos modificados en el archivo abierto especificado por el parámetro FileDescriptor se guarden en el almacenamiento permanente. Al volver de la subrutina fsync , se han guardado todas las actualizaciones en el almacenamiento permanente.
La subrutina fsync_range hace que todos los datos modificados en el rango especificado del archivo abierto especificado por el parámetro FileDescriptor se guarden en el almacenamiento permanente. Al volver de la subrutina fsync_range , todas las actualizaciones del rango especificado se han guardado en el almacenamiento permanente.
Este párrafo hace referencia a la función en desuso disponible sólo en el sistema de archivos JFS. Los datos grabados en un archivo que un proceso ha abierto para actualización diferida (con el distintivo O_DEFER ) no se graban en el almacenamiento permanente hasta que otro proceso emita una llamada fsync_range o fsync en este archivo o ejecute una subrutina Escribir síncrona (con el distintivo O_SYNC ) en este archivo. Consulte el archivo fcntl.h y la subrutina open para obtener descripciones de los distintivos O_DEFER y O_SYNC respectivamente.
Parámetros
| Elemento | Descripción |
|---|---|
| FileDescriptor | Un descriptor de archivo abierto válido. |
| ¿Cómo | Especifique las características de manejo de la operación.
|
| inicio | Cómo iniciar el desplazamiento del archivo |
| longitud | Longitud, o cero para todos los datos de memoria caché. |
Valores de retorno
Tras la finalización satisfactoria, la subrutina fsync devuelve un valor de 0. En caso contrario, se devuelve un valor de -1 y se establece la variable global errno para indicar el error.
Tras la finalización satisfactoria, la subrutina fsync_range devuelve un valor de 0. En caso contrario, se devuelve un valor de -1 y se establece la variable global errno para indicar el error.
Códigos de error
La subrutina fsync o fsync_range no es satisfactoria si una o más de las siguientes son verdaderas:
| Elemento | Descripción |
|---|---|
| EIO | Se ha producido un error de E/S al leer o grabar en el sistema de archivos. |
| EBADF | El parámetro FileDescriptor no es un descriptor de archivo válido abierto para grabación. |
| EINVAL | El archivo no es un archivo normal. |
| EINTR | La subrutina se ha interrumpido por una señal. |