簡體   English   中英

read(fd,NULL,0); 它有什么作用? 它定義明確嗎?

[英]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的返回值和errnoEBADF 如果一切正常,則返回值將為0 ,而另一個read將不返回與文件描述符的有效性相關聯的錯誤。

使用實際緩沖區和nbyte > 0的后續read仍然可以生成任何數量的錯誤,如ENOMEMEAGAIN ,......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM