write

来自Linux/Unix中文资料库
跳转至: 导航搜索

Section: Linux Programmer's Manual (2) Updated: 13 January 1996

名称

write - 在一个文件描述符上执行写操作。

概述

#include <unistd.h>

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

描述

write 向文件描述符 fd 所引用的文件中写入 从 buf 开始的缓冲区中 count 字节的数据。 POSIX 规定,当使用了 write() 之后再使用 read(),那么读取到的应该是更新后的数据。 但请注意并不是所有的文件系统都是 POSIX 兼容的。

返回值

成功时返回所写入的字节数(若为零则表示没有写入数据)。 错误时返回 -1,并置 errno 为相应值。 若 count 为零,对于普通文件无任何影响,但对特殊文件将产生不可预料的后果。

错误代码

EBADF
fd 不是一个合法的文件描述符或者没有以写方式打开。
EINVAL
fd 所指向的对象不可写。
EFAULT
buf 不在用户可访问地址空间内。
EPIPE
fd 连接到一个管道,或者套接字的读方向一端已关闭。此时写进程将接收到 SIGPIPE 信号;如果此信号被捕获,阻塞或忽略,那么将返回错误 EPIPE
EAGAIN
读操作阻塞,但使用 O_NONBLOCK 指定了非阻塞式输入输出。
EINTR
在写数据以前调用被信号中断。
ENOSPC
fd 指向的文件所在的设备无可用空间。
EIO
当编辑一个节点时发生了底层输入输出错误。

可能发生了其他错误,取决于 fd 所连接的对象。

兼容于

SVr4、 SVID、 POSIX、 X/OPEN、 4.3BSD。

SVr4 文档添加了以下错误代码: EDEADLKEFBIGENOLCKENOLNKENOSRENXIOEPIPE 或者 ERANGE。 对于 SVr4 有可能在写入部分数据时发生中断并返回 EINTR

参见

open(2), read(2), fcntl(2), close(2), lseek(2), select(2), ioctl(2), fsync(2), fwrite(3)

[中文版维护人]

byeyear <love_my_love@263.net>

[中文版最新更新]

2002.02.07

《中国linux论坛man手册页翻译计划》: http://cmpp.linuxforum.net