Dim*_*nek 5 c linux driver linux-kernel
我在一些程序中看到了以下声明,大部分/全部似乎都是针对Linux制作的.
rv = read(fd, NULL, 0);
在某些程序中,它处于一个循环中,在一些语句中.
它真的有什么作用?
手册页说这样的调用可能会也可能不会检查错误...
返回值的意义是什么?
支持哪些类型的文件描述符?
如果rv==0如何区分"无错误"与例如"套接字关闭".
此调用将对文件描述符执行所有常规错误检查,但不从中检索任何数据.如果您希望确定文件描述符是否仍然有效而不阻塞它,这将非常有用.
-1如果发生错误,它将返回,0否则.man 2 read可以通过这种方式查询列出的大多数错误,并将返回errno.
例如,如果关闭文件描述符,则将返回-1和errno的返回值EBADF.相反,返回值将是0一切都很好而另一个read不会返回与文件描述符的有效性相关的错误.
随后的read一个真正的缓冲区,nbyte > 0仍然可以生成任何数量的类似错误ENOMEM,EAGAIN...