Provided by: manpages-zh_1.5.1-1_all bug

NAME

       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文档添加了以下错误代码:
       EDEADLK,   EFBIG,   ENOLCK,  ENOLNK,  ENOSR,  ENXIO,  EPIPE,或者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

linuxan:
       http://cmpp.linuxforum.net