bionic (2) sendfile.2.gz

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)