gpt4 book ai didi

c - 为什么这个阻塞套接字读取返回零并且没有错误?

转载 作者:太空狗 更新时间:2023-10-29 11:24:28 25 4
gpt4 key购买 nike

这段代码在 Linux 上运行:

int r, c;
...
assert(0 == (O_NONBLOCK & fcntl(sockfd, F_GETFL, 0)));
errno = 0;
r = read(sockfd, &c, 1);
if (r == 0 && errno == 0) {
printf("What gives?\n");
}
...

正在从套接字执行读取,偶尔会返回零(在 r 中)并将 errno 也设置为零 (0)。 我遇到了什么情况?除非出现错误,否则我真的很想拥有读取 block 。

最佳答案

这意味着客户端已完成发送数据(例如:为写入执行了关闭),并且您已经读取了所有可用数据。

RETURN VALUE

On success, the number of bytes read is returned (zero indicates end of file), and the file position is advanced by this number.

关于c - 为什么这个阻塞套接字读取返回零并且没有错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9806649/

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