gpt4 book ai didi

c - 读取(fd,NULL,0);它有什么作用?它定义明确吗?

转载 作者:IT王子 更新时间:2023-10-29 01:16:14 25 4
gpt4 key购买 nike

我在一些程序中看到了以下声明,大多数/所有似乎都是为 Linux 制作的。

rv = read(fd, NULL, 0);

在一些程序中它在一个循环中,在一些单独的语句中。

它到底有什么作用?

手册页说像这样的调用可能会或可能不会检查错误...

返回值有什么意义?

支持哪些类型的文件描述符?

如果 rv==0 如何区分“无错误”和例如“套接字关闭”。

最佳答案

此调用将对文件描述符进行所有常见的错误检查,但不会从中检索任何数据。如果您希望确定文件描述符是否仍然有效而不阻塞它,这将很有用。

如果发生错误,它将返回-1,否则返回0man 2 read中列出的大部分错误都可以通过这种方式查询到,并在errno中返回。

例如 -1 的返回值和 EBADFerrno 将在文件描述符关闭时重新调整。相反,如果一切正常,返回值将是 0,并且另一个 read 不会返回与文件描述符的有效性相关的错误。

使用真实缓冲区和 nbyte > 0 的后续 read 仍然会生成任意数量的错误,例如 ENOMEMEAGAIN, ...

关于c - 读取(fd,NULL,0);它有什么作用?它定义明确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23112402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com