在偏移处从文件描述符读/写

时间:2013-11-05 02:22:14

标签: c file-descriptor

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

是否有这样的函数允许您将偏移量放入文件中进行读/写?

5 个答案:

答案 0 :(得分:11)

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);

答案 1 :(得分:6)

是。您可以使用the same library中的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 */
祝你好运!

答案 2 :(得分:4)

是的,您正在寻找lseek

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

答案 3 :(得分:3)

lseek()你们将得到。

答案 4 :(得分:0)

是的,您可以使用lseek()

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

lseek()函数根据指令fd将与文件描述符offse关联的打开文件的偏移量重新定位到参数whence,如下所示:

     

SEEK_SET

     

偏移量设置为偏移字节。

     

SEEK_CUR

     

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

     

SEEK_END

     

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