Provided by: manpages-es_1.55-10_all bug

NOMBRE

       sendfile - transfiere datos entre descriptores de fichero

SINOPSIS

       ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);

DESCRIPCIÓN

       Esta  llamada  copia  datos  entre  un descriptor de fichero y otro. Cualquiera de los dos
       descriptores de fichero o los dos pueden referirse a un conector (vea más  abajo).   in_fd
       debe  ser  un  descriptor  de fichero abierto para lectura y out_fd debe ser un descriptor
       abierto para escritura.  offset es un puntero a una variable que contiene la posición  del
       puntero  del  fichero  de  entrada  desde  la que sendfile() empezará a leer datos. Cuando
       sendfile() regrese, a esta variable se le asignará  la  posición  del  byte  siguiente  al
       último  byte  que  se  ha  leído.   count  es  la  cantidad  de  bytes  a copiar entre los
       descriptores de fichero.

       Puesto que esta copia se lleva a cabo dentro del núcleo, sendfile()  no  necesita  emplear
       tiempo en transferir datos a y desde el espacio de usuario.

OBSERVACIONES

       Sendfile no modifica el puntero de fichero actual de in_fd, pero sí lo hace para out_fd.

       Si  planea  usar  sendfile  para  enviar  ficheros a un conector TCP, pero necesita enviar
       algunos datos de cabecera delante de los contenidos del fichero, por favor vea  la  opción
       TCP_CORK en tcp(7) para minimizar el número de paquetes y ajustar el rendimiento.

       Actualmente,  el  descriptor desde el que se lee no puede corresponder a un conector, debe
       corresponder con un fichero que soporte operaciones del tipo mmap().

VALOR DEVUELTO

       Si la transferencia ha tenido éxito, se devuelve el número de bytes  escritos  en  out_fd.
       En caso de error, se devuelve -1 y se asigna a errno un valor apropiado.

ERRORES

       EBADF  El  fichero de entrada no ha sido abierto para lectura o el fichero de salida no ha
              sido abierto para escritura.

       EINVAL Descriptor inválido o bloqueado.

       ENOMEM No hay memoria suficiente para leer de in_fd.

       EIO    Se ha producido un error indeterminado al leer de in_fd.

VERSIONES

       sendfile es una nueva característica de la versión 2.2 de Linux.  El fichero  de  cabecera
       <sys/sendfile.h> está presente desde glibc 2.1.

       Otros  Unix normalmente implementan sendfile con otras semánticas y prototipos. No debería
       usarse en programas transportables.

VÉASE TAMBIÉN

       socket(2), open(2)