| Developer's Daily | Unix by Example |
| main | java | perl | unix | dev directory | web log |
|
write − write to a file descriptor |
|
#include <unistd.h> ssize_t write(int fd, const void *buf, size_t count); |
|
write writes up to count bytes to the file referenced by the file descriptor fd from the buffer starting at buf. POSIX requires that a read() which can be proved to occur after a write() has returned returns the new data. Note that not all file systems are POSIX conforming. |
|
On success, the number of bytes written are returned (zero indicates nothing was written). On error, −1 is returned, and errno is set appropriately. If count 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. |
|
EBADF |
fd is not a valid file descriptor or is not open for writing. |
||
|
EINVAL |
fd is attached to an object which is unsuitable for writing. |
||
|
EFAULT |
buf is outside your accessible address space. |
||
|
EPIPE |
fd is connected to a pipe or socket whose reading end is closed. When this happens the writing process will receive a SIGPIPE signal; if it catches, blocks or ignores this the error EPIPE is returned. |
||
|
EAGAIN |
Non-blocking I/O has been selected using O_NONBLOCK and there was no room in the pipe or socket connected to fd to write the data immediately. |
||
|
EINTR |
The call was interrupted by a signal before any data was written. |
||
|
ENOSPC |
The device containing the file referred to by fd has no room for the data. |
||
|
EIO |
A low-level I/O error occurred while modifying the inode. |
|
Other errors may occur, depending on the object connected to fd. |
|
SVr4, SVID, POSIX, X/OPEN, 4.3BSD. SVr4 documents additional error conditions EDEADLK, EFBIG, ENOLCK, ENOLNK, ENOSR, ENXIO, EPIPE, or ERANGE. Under SVr4 a write may be interrupted and return EINTR at any point, not just before any data is written. |
|
open(2), read(2), fcntl(2), close(2), lseek(2), select(2), ioctl(2), fsync(2), fwrite(3) |