gpt4 book ai didi

C 先读再写

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:58 25 4
gpt4 key购买 nike

在我们做之后:

int readStat = read(fd, buf, sizeof(buf));

为什么应该是:

int status = write(socket_num, buf, readStat);

代替

int status = write(socket_num, buf, sizeof(buf));

?所以我们为什么要传入 read 的返回值,而不是像手册页指示的那样传入 buf 的大小?!

最佳答案

read 返回实际读取的字节数,请记住,您可能有一个 500 字节长的文件,请求读取 500 字节,但只返回 200 字节。所以你应该总是循环读取直到返回文件末尾。 TCP/IP 读取尤其如此,因为您是从缓冲区中拉取的。

实际上,如果有足够的文件,您可能总是会从文件中获得您请求的字节数,但是从技术上讲,这并不总是正确的。

但是举个例子,如果你有一个 32 字节的文件,而你有一个 500 字节的缓冲区。您只会读取 32 个字节,因此其他 500 个字节将是垃圾。现在,当您编写新文件时,它的长度为 500 字节,而不是 32。

关于C 先读再写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35765503/

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