可能重复:
C中写入(2)的返回值为0是否为错误?
假设count> 0:
ret = write(fd, buf, count);
if(ret == 0) {
// Should I try to write again
// or treat this as error?
}
Run Code Online (Sandbox Code Playgroud)
是否有可能出现这种情况?
R..*_*R.. 10
除非你明确地传递了零长度write,否则永远不会发生在正确的POSIX符合系统上.如果你想支持各种晦涩难懂的遗留专有统一,你可能需要调查每一个上发生的事情,以及零的返回值是代替EINTR或代替EWOULDBLOCK或出现其他错误......
就个人而言,2011年我会假设它没有发生.还有很多其他的东西会破坏更糟糕的尝试支持这样破旧的旧垃圾..
注意,按POSIX:
如果write()在写入任何数据之前被信号中断,它将返回-1并将errno设置为[EINTR].
http://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html