使用fd(而不是FILE*)进行fseek操作

10

是否有fd的fseek等效函数?我已经使用int fds很长时间了,想要使用fseek...但是我知道没有seek函数。

提前感谢!

1个回答

14

请参考 POSIX 函数 lseek(2)

概要

#include <unistd.h>

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

描述

lseek()函数根据指令whence将文件描述符fildes的偏移量重新定位到参数offset。参数fildes必须是已打开的文件描述符。


1
有人知道lseek函数的历史,特别是为什么要加上l这个字母吗?我一直怀疑l代表的是long,因为最初的偏移参数类型是long,在16位int类型的时代,如果seek原型函数接受一个int类型的偏移参数,很快就会变得无用于文件操作。 - R.. GitHub STOP HELPING ICE
5
@R..: John Lion的UNIX V6源代码(在网上找到)表明版本6只有使用int类型偏移量的seek函数。而版本7手册(也在网上找到)则没有seek函数出现,而是使用long类型偏移量的lseek函数。我也只能猜测,但你的猜测对我来说看起来不错。 - ephemient

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接