Provided by: manpages-es_1.55-8_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)