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