14

我一直在使用read(2)write(2)函数来读取和写入给定文件描述符的文件。

有没有这样的功能可以让您在文件中放置一个偏移量以进行读/写?

4

5 回答 5

24

有接受文件偏移的pread/pwrite函数:

ssize_t pread(int fd, void *buf, size_t count, off_t offset);
ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);
于 2015-09-02T14:24:44.547 回答
13

是的。您使用同一个库lseek 中的函数。

然后,您可以查找相对于文件开头或结尾或相对于当前位置的任何偏移量。

不要被那个图书馆页面弄得不知所措。以下是一些简单的使用示例,可​​能大多数人都需要:

lseek(fd, 0, SEEK_SET);   /* seek to start of file */
lseek(fd, 100, SEEK_SET); /* seek to offset 100 from the start */
lseek(fd, 0, SEEK_END);   /* seek to end of file (i.e. immediately after the last byte) */
lseek(fd, -1, SEEK_END);  /* seek to the last byte of the file */
lseek(fd, -10, SEEK_CUR); /* seek 10 bytes back from your current position in the file */
lseek(fd, 10, SEEK_CUR);  /* seek 10 bytes ahead of your current position in the file */

祝你好运!

于 2013-11-05T02:25:18.787 回答
6

是的,您正在寻找lseek.

http://linux.die.net/man/2/lseek

于 2013-11-05T02:24:24.453 回答
6

lseek()你们就会得到。

于 2013-11-05T02:25:09.067 回答
2

是的,您可以使用lseek()

off_t lseek(int fd, off_t offset, int whence);

该函数根据以下指令将lseek()与文件描述符关联的打开文件的偏移量重新定位fd到参数t :offsewhence

SEEK_SET

偏移量设置为偏移字节。

SEEK_CUR

偏移量设置为其当前位置加上偏移量字节。

SEEK_END

偏移量设置为文件大小加上偏移量字节。

于 2013-11-05T02:24:46.327 回答