[英]read(fd, NULL, 0); what does it do? is it well-defined?
我在一些程序中看到了以下聲明,大部分/全部似乎都是針對Linux制作的。
rv = read(fd, NULL, 0);
在某些程序中,它處於一個循環中,在一些語句中。
它真的有什么作用?
手冊頁說這樣的調用可能會也可能不會檢查錯誤...
返回值的意義是什么?
支持哪些類型的文件描述符?
如果rv==0
如何區分“無錯誤”,例如“socket closed”。
此調用將對文件描述符執行所有常規錯誤檢查,但不從中檢索任何數據。 如果您希望確定文件描述符是否仍然有效而不阻塞它,這將非常有用。
如果發生錯誤,它將返回-1
,否則返回0
。 可以通過這種方式查詢man 2 read
列出的大多數錯誤,並以errno
形式返回。
例如,如果關閉文件描述符, errno
返回-1
的返回值和errno
的EBADF
。 如果一切正常,則返回值將為0
,而另一個read
將不返回與文件描述符的有效性相關聯的錯誤。
使用實際緩沖區和nbyte > 0
的后續read
仍然可以生成任何數量的錯誤,如ENOMEM
, EAGAIN
,......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.