1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
.\" 1993 Michael Haardt, Ian Jackson.
.\"
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date. The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein. The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\"
.\" Modified Sat Jul 24 13:35:59 1993 by Rik Faith <faith@cs.unc.edu>
.\" Modified Sun Nov 28 17:19:01 1993 by Rik Faith <faith@cs.unc.edu>
.\" Modified Sat Jan 13 12:58:08 1996 by Michael Haardt
.\" <michael@cantor.informatik.rwth-aachen.de>
.\" Modified Sun Jul 21 18:59:33 1996 by Andries Brouwer <aeb@cwi.nl>
.\" 2001-12-13 added remark by Zack Weinberg
.\" Translated into Spanish Mon Feb 9 1998 by Gerardo Aburruzaga
.\" García <gerardo.aburruzaga@uca.es>
.\" Translation revised Mon Aug 17 1998 by Juan Piernas <piernas@ditec.um.es>
.\" Revisado por Miguel Pérez Ibars <mpi79470@alu.um.es> el 24-diciembre-2004
.\"
.TH WRITE 2 "13 diciembre 2001" "Linux 2.0.32" "Manual del Programador de Linux"
.SH NOMBRE
write \- escribe a un descriptor de fichero
.SH SINOPSIS
.B #include <unistd.h>
.sp
.BI "ssize_t write(int " fd ", const void *" buf ", size_t " num );
.SH DESCRIPCIÓN
.B write
escribe hasta
.I num
bytes en el fichero referenciado por el descriptor de fichero
.I fd
desde el búfer que comienza en
.IR buf.
POSIX requiere que un \fBread()\fP que pueda demostrarse que ocurra
después que un
\fBwrite()\fP haya regresado, devuelva los nuevos datos. Observe que
no todos los sistemas de ficheros son conformes con POSIX.
.SH "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 \fIerrno\fP. Si \fInum\fP 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.
.SH ERRORES
.TP
.B EBADF
.I fd
no es un descriptor válido de fichero o no está abierto para escritura.
.TP
.B EINVAL
.I fd
está asociado a un objeto que no es adecuado para la escritura.
.TP
.B EFAULT
.I buf
está afuera del espacio de direcciones accesible.
.TP
.B 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.
.TP
.B EPIPE
.I 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
.BR SIGPIPE.
(De esta forma, el valor devuelto por write es visto solamente si el programa
captura, bloquea o ignora esta señal.)
.TP
.B EAGAIN
Se ha seleccionado E/S no bloqueante empleando
.B O_NONBLOCK
y la escritura podría bloquearse.
.TP
.B EINTR
La llamada ha sido interrumpida por una señal antes de que se haya
escrito ningún dato.
.TP
.B ENOSPC
El dispositivo que contiene al fichero referenciado por
.I fd
no tiene sitio para los datos.
.TP
.B EIO
Ha ocurrido un error de E/S de bajo nivel mientras se estaba
modificando el nodo-í.
.PP
Pueden ocurrir otros errores, dependiendo del objeto conectado a
.IR fd .
.SH "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.
.SH OBSERVACIONES
Que
.B 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
.BR fsync (2)
después de escribir todos los datos.
.SH "VÉASE TAMBIÉN"
.BR close (2),
.BR fcntl (2),
.BR fsync (2),
.BR ioctl (2),
.BR lseek (2),
.BR open (2),
.BR read (2),
.BR select (2),
.BR fwrite (3),
.BR writev (3)
|