mirror of https://github.com/mkerrisk/man-pages
136 lines
4.4 KiB
Groff
136 lines
4.4 KiB
Groff
.\" 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
|
|
.\"
|
|
.TH WRITE 2 2001-12-13 "Linux 2.0.32" "Linux Programmer's Manual"
|
|
.SH NAME
|
|
write \- write to a file descriptor
|
|
.SH SYNOPSIS
|
|
.B #include <unistd.h>
|
|
.sp
|
|
.BI "ssize_t write(int " fd ", const void *" buf ", size_t " count );
|
|
.SH DESCRIPTION
|
|
.BR write ()
|
|
writes up to
|
|
.I count
|
|
bytes to the file referenced by the file descriptor
|
|
.I fd
|
|
from the buffer starting at
|
|
.IR buf .
|
|
POSIX requires that a \fBread\fP() which can be proved to occur after a
|
|
\fBwrite\fP() has returned returns the new data. Note that not all file
|
|
systems are POSIX conforming.
|
|
.SH "RETURN VALUE"
|
|
On success, the number of bytes written are returned (zero indicates
|
|
nothing was written). On error, \-1 is returned, and \fIerrno\fP is set
|
|
appropriately. If \fIcount\fP is zero and the file descriptor refers to
|
|
a regular file, 0 will be returned without causing any other effect.
|
|
For a special file, the results are not portable.
|
|
.SH ERRORS
|
|
.TP
|
|
.B EAGAIN
|
|
Non-blocking I/O has been selected using
|
|
.B O_NONBLOCK
|
|
and the write would block.
|
|
.TP
|
|
.B EBADF
|
|
.I fd
|
|
is not a valid file descriptor or is not open for writing.
|
|
.TP
|
|
.B EFAULT
|
|
.I buf
|
|
is outside your accessible address space.
|
|
.TP
|
|
.B EFBIG
|
|
An attempt was made to write a file that exceeds the implementation-defined
|
|
maximum file size or the process' file size limit, or to write at a position
|
|
past the maximum allowed offset.
|
|
.TP
|
|
.B EINTR
|
|
The call was interrupted by a signal before any data was written.
|
|
.TP
|
|
.B EINVAL
|
|
.I fd
|
|
is attached to an object which is unsuitable for writing;
|
|
or the file was opened with the
|
|
.B O_DIRECT
|
|
flag, and either the address specified in
|
|
.IR buf ,
|
|
the value specified in
|
|
.IR count ,
|
|
or the current file offset is not suitably aligned.
|
|
.TP
|
|
.B EIO
|
|
A low-level I/O error occurred while modifying the inode.
|
|
.TP
|
|
.B ENOSPC
|
|
The device containing the file referred to by
|
|
.I fd
|
|
has no room for the data.
|
|
.TP
|
|
.B EPIPE
|
|
.I fd
|
|
is connected to a pipe or socket whose reading end is closed. When this
|
|
happens the writing process will also receive a
|
|
.B SIGPIPE
|
|
signal.
|
|
(Thus, the write return value is seen only if the program
|
|
catches, blocks or ignores this signal.)
|
|
.PP
|
|
Other errors may occur, depending on the object connected to
|
|
.IR fd .
|
|
.SH "CONFORMING TO"
|
|
SVr4, SVID, POSIX, X/OPEN, 4.3BSD. SVr4 documents additional error
|
|
conditions EDEADLK, ENOLCK, ENOLNK, ENOSR, ENXIO, or ERANGE.
|
|
Under SVr4 a write may be interrupted and return EINTR at any point,
|
|
not just before any data is written.
|
|
.SH NOTES
|
|
A successful return from
|
|
.BR write ()
|
|
does not make any guarantee that data has been committed to disk.
|
|
In fact, on some buggy implementations, it does not even guarantee
|
|
that space has successfully been reserved for the data.
|
|
The only way to be sure is to call
|
|
.BR fsync (2)
|
|
after you are done writing all your data.
|
|
.SH "SEE ALSO"
|
|
.BR close (2),
|
|
.BR fcntl (2),
|
|
.BR fsync (2),
|
|
.BR ioctl (2),
|
|
.BR lseek (2),
|
|
.BR open (2),
|
|
.BR pwrite (2),
|
|
.BR read (2),
|
|
.BR select (2),
|
|
.BR writev (3),
|
|
.BR fwrite (3)
|