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

Ano*_*ous 1 c io

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

n = read(fd, *buffer, 10) n2 = read(fd, *buffer, 10)

第一次调用read会读10个字节,而文件描述符的文件fdbuffer.但是当我再次调用它时,它会读取完全相同的东西,还是会读取接下来的 10个字节?我真的认为这没有意义,但我认为无法定义所需的起始索引.

use*_*751 5

操作系统跟踪文件中的"当前位置".当您打开文件时,这将是文件的开头.每次调用时read,都会从当前位置读取一些字节,并提前当前位置.您可以使用lseek更改当前位置.

请注意,这read也适用于没有当前位置的东西,比如管道和套接字.从那些读取将始终返回您尚未读取的下一位数据,这使它们与文件的工作方式一致(除了您不能使用lseek).