pread(2)

NOMBRE
pread, pwrite - leen o escriben en una determinada posición de un descriptor de archivo

BIBLIOTECA
Biblioteca Estándar C (libc, -lc)

SINOPSIS
#include <unistd.h>

ssize_t pread(size_t count;
              int fd, void buf[count], size_t count,
              off_t offset);
ssize_t pwrite(size_t count;
              int fd, const void buf[count], size_t count,
              off_t offset);

    Requisitos de Macros de Prueba de Características para glibc (véase feature_test_macros(7)):

pread(), pwrite():
    _XOPEN_SOURCE >= 500
        || /* Desde glibc 2.12: */ _POSIX_C_SOURCE >= 200809L

DESCRIPCIÓN
pread() lee hasta count bytes del descriptor de fichero fd a partir de la posición offset (desde el principio del fichero) en el área temporal que empieza en buf. La posición del puntero de L/E del fichero no cambia.

pwrite() escribe hasta count bytes desde el buffer que empieza en buf al descriptor de fichero fd a partir de la posición offset. La posición del puntero del fichero no cambia.

Debe ser posible realizar búsquedas sobre el fichero referenciado por fd.

VALOR DEVUELTO
En caso de éxito, pread() devuelve el número de bytes leídos (un valor de cero nos indicará el final del archivo) y pwrite() devuelve el número de bytes escritos.

No es un error que una llamada exitosa transfiera menos bytes de los solicitados (véanse read(2) y write(2)).

En caso de error se devuelve -1, y errno se define con el valor correspondiente.

ERRORES
pread() puede fallar y asignar a errno cualquier error especificado por read(2) o lseek(2). pwrite() puede fallar y asignar a errno cualquier error especificado por write(2) o lseek(2).

ESTÁNDARES
POSIX.1-2024.

HISTORIAL
POSIX.1-2001.

Añadido en Linux 2.1.60; las entradas en la tabla de llamadas al sistema i386 se añadieron en Linux 2.1.69. La compatibilidad con la biblioteca C (incluida la emulación mediante lseek(2) en núcleos antiguos sin las llamadas al sistema) se añadió en glibc 2.1.

  Diferencias núcleo / biblioteca C
En Linux, las llamadas al sistema subyacentes se renombraron en Linux 2.6: pread() pasó a ser pread64() y pwrite() a ser pwrite64(). Los números de las llamadas al sistema se mantuvieron sin cambios. Las funciones contenedoras pread() y pwrite() de glibc gestionan el cambio de forma transparente.

En algunas arquitecturas de 32 bits, la firma de llamada para estas llamadas al sistema difiere. El motivo ha sido descrit en syscall(2).

NOTAS
Las llamadas al sistema pread() y pwrite() son especialmente útiles en aplicaciones multihilo. Permiten que varios hilos realicen operaciones de E/S en el mismo descriptor de archivo sin verse afectados por los cambios en el archivo desplazado por otros hilos.

ERRORES
POSIX requiere que, al abrir un archivo con el indicador O_APPEND, no se afecte la ubicación donde pwrite() escribe los datos. Sin embargo, en Linux, si se abre un archivo con O_APPEND, pwrite() agregará datos al final del archivo, independientemente del valor de offset.

VÉASE TAMBIÉN
lseek(2), read(2), readv(2), write(2)

TRADUCCIÓN
La traducción al español de esta página del manual fue creada por Juan Piernas <piernas@ditec.um.es> y Marcos Fouces <marcos@debian.org>

Esta traducción es documentación libre; lea la GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.

Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org.