gpt4 book ai didi

c - 如果我多次调用 C 的 read() 会发生什么?

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

文档对此非常模糊。如果我多次调用 C 的 read() 函数,我必须每次都传递一些我希望读取的字节。但是我怎么知道起始索引是什么?例如:

n = 读取(fd,*缓冲区,10)
n2 = 读取(fd,*缓冲区,10)

第一次调用 read 会将文件描述符为 fd 的文件的 10 个字节读入 buffer。但是当我再次调用它时,它会读取完全相同的内容,还是会读取下一个 10 个字节?我真的不认为这有什么意义,但我看不出有其他方法可以定义所需的起始索引。

最佳答案

操作系统会跟踪文件中的“当前位置”。当您打开文件时,这将是文件的开头。每次调用 read 时,都会从当前位置读取一些字节,同时也会将当前位置向前推进。您可以使用 lseek改变当前位置。

请注意,read 也适用于没有当前位置的事物,例如管道和套接字。由于从中读取数据总是会返回您尚未读取的下一位数据,这使它们与文件的工作方式保持一致(除了您不能使用 lseek)。

关于c - 如果我多次调用 C 的 read() 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34867211/

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