write

WRITE(2)                Manual del Programador de Linux               WRITE(2)



NOMBRE
       write - escribe a un descriptor de fichero

SINOPSIS
       #include <unistd.h>

       ssize_t write(int fd, const void *buf, size_t num);

DESCRIPCIÃN
       write escribe hasta num bytes en el fichero referenciado por el
       descriptor de fichero fd desde el búfer que comienza en buf.  POSIX
       requiere que un read() que pueda demostrarse que ocurra después que un
       write() haya regresado, devuelva los nuevos datos. Observe que no todos
       los sistemas de ficheros son conformes con POSIX.

VALOR DEVUELTO
       En caso de éxito, se devuelve el número de bytes escritos (cero
       indica pues que no se ha escrito nada). En caso de error, se devuelve
       -1 y se pone un valor apropiado en errno. Si num es cero y el
       descriptor de fichero se refiere a un fichero regular, se devolverá 0
       sin que se cause ningún otro efecto. Para un fichero especial, los
       resultados no son transportables.

ERRORES
       EBADF  fd no es un descriptor válido de fichero o no está abierto
              para escritura.

       EINVAL fd está asociado a un objeto que no es adecuado para la
              escritura.

       EFAULT buf está afuera del espacio de direcciones accesible.

       EFBIG  se intentó escribir en un fichero que sobrepasa el tamaño
              máximo de fichero definido por la implementación o el lÃmite
              de tamaño de fichero del proceso, o escribir en una posición
              más allá del máximo desplazamiento permitido.

       EPIPE  fd está conectado a una tuberÃa o zócalo cuyo extremo de
              lectura está cerrado. Cuando esto ocurre el proceso de
              escritura recibirá también una señal SIGPIPE.  (De esta
              forma, el valor devuelto por write es visto solamente si el
              programa captura, bloquea o ignora esta señal.)

       EAGAIN Se ha seleccionado E/S no bloqueante empleando O_NONBLOCK y la
              escritura podrÃa bloquearse.

       EINTR  La llamada ha sido interrumpida por una señal antes de que se
              haya escrito ningún dato.

       ENOSPC El dispositivo que contiene al fichero referenciado por fd no
              tiene sitio para los datos.

       EIO    Ha ocurrido un error de E/S de bajo nivel mientras se estaba
              modificando el nodo-Ã.

       Pueden ocurrir otros errores, dependiendo del objeto conectado a fd.

CONFORME A
       SVr4, SVID, POSIX, X/OPEN, 4.3BSD.  SVr4 documenta condiciones de error
       adicionales EDEADLK, ENOLCK, ENOLNK, ENOSR, ENXIO, o ERANGE.  En SVr4
       una escritura puede ser interrumpida y devolver EINTR en cualquier
       momento, no sólo justo antes de que se escriba algún dato.

OBSERVACIONES
       Que write regrese con éxito no garantiza que los datos hayan sido
       llevados a disco.  De hecho, en algunas implementaciones defectuosas,
       ni siquiera garantiza que el espacio para los datos haya sido reservado
       satisfactoriamente.  La única manera de estar seguro de ésto es
       llamar a fsync(2) después de escribir todos los datos.

VÃASE TAMBIÃN
       close(2), fcntl(2), fsync(2), ioctl(2), lseek(2), open(2), read(2),
       select(2), fwrite(3), writev(3)



Linux 2.0.32                   13 diciembre 2001                      WRITE(2)