对UNIX文件描述符的短写入

时间:2010-06-17 13:56:48

标签: unix file

什么时候可以在FreeBSD 7.2中对文件描述符进行短写?

我的意思是“写入”系统调用返回的字节数少于请求的字节数。

我正在谈论ufs文件系统中普通文件的描述符,我们可以通过调用open()来获取它。

1 个答案:

答案 0 :(得分:2)

write()可以返回比请求的更少的字节:

有一个进程上下文切换或接收到SIGINT,write()不是原子的。 在读取整个缓冲区之前,当EOF发生时,write()返回的字节数减少。

如果fd设置为非阻塞,则其他瞬态条件可能导致write()返回写入的字节数少于请求的数量 - 这是实现定义的行为。 一个例子是文件系统上的瞬态磁盘已满错误,例如/ tmp。 NFS文件系统有时不能很好地运行:从close()返回错误可能是您在NFS挂载文件的write()上检测到磁盘已满错误的唯一方法。