write() - Unix,Linux系统调用
Tutorials Point


  Unix初学者指南
  Unix Shell编程
  高级Unix
  Unix有用参考
  Unix有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考     讨论论坛     关于TP  

write() - Unix,Linux系统调用


previous next AddThis Social Bookmark Button

广告

名称

write - 写入文件描述符

概要

#include <unistd.h> 

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

描述

write() 将最多 count 个字节从以 buf 开头的缓冲区写入文件描述符 fd 引用的文件。POSIX 要求可以证明在 write() 返回后发生的 read() 返回新数据。请注意,并非所有文件系统都符合 POSIX 标准。

返回值

成功时,返回写入的字节数(零表示没有写入任何内容)。错误时,返回 -1,并且 errno 被相应地设置。

如果 count 为零且文件描述符引用常规文件,则可能返回 0,或者可能会检测到错误。对于特殊文件,结果不可移植。

错误

错误代码描述
EAGAIN 已使用 O_NONBLOCK 选择非阻塞 I/O,并且写入将阻塞。
EBADF fd 不是有效的文件描述符,或者未打开以进行写入。
EFAULT buf 位于您可访问的地址空间之外。
EFBIG 尝试写入的文件超过了实现定义的最大文件大小或进程的文件大小限制,或者尝试写入的位置超过了允许的最大偏移量。
EINTR 在写入任何数据之前,调用被信号中断。
EINVAL fd 附加到不适合写入的对象;或者该文件已使用 O_DIRECT 标志打开,并且 buf 中指定的地址、count 中指定的值或当前文件偏移量未正确对齐。
EIO 修改 inode 时发生低级 I/O 错误。
ENOSPC 包含 fd 引用的文件所在的设备没有足够的空间存放数据。
EPIPE fd 连接到其读取端已关闭的管道或套接字。发生这种情况时,写入进程也将收到 SIGPIPE 信号。(因此,只有当程序捕获、阻塞或忽略此信号时,才能看到写入返回值。)

可能会发生其他错误,具体取决于连接到 fd 的对象。

符合标准

SVr4、4.3BSD、POSIX.1-2001。在 SVr4 下,写入可能会被中断并在任何时候返回 EINTR,而不仅仅是在写入任何数据之前。

注释

write() 的成功返回并不保证数据已写入磁盘。事实上,在一些有缺陷的实现中,它甚至不能保证已成功为数据保留空间。唯一确定方法是在完成所有数据写入后调用 fsync(2)。

参见



previous next Printer Friendly

广告


  

广告



广告