Linux repositories inspector
Página man de Linux
Aliases: sendfile64(2), sendfile64(2), sendfile64(2), sendfile64(2), sendfile64(2), sendfile64(2)

manpages-es

Spanish man pages

man-pages-es

Spanish man pages from the Linux Documentation Project

manpages-dev

Manual pages about using GNU/Linux for development

man-pages

Linux kernel and C library user-space interface documentation

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

⇧ Top