文件描述符上的ftell?

46

有没有一种方法可以像ftell()那样(返回文件中的当前位置)在原始文件描述符上执行,而不是在FILE*上执行?我认为应该有,因为您可以使用lseek()在原始文件描述符上进行查找。

我知道我可以使用fdopen()创建与文件描述符对应的FILE*,但我不想这样做。

1个回答

87

只需使用:

position = lseek(fd, 0, SEEK_CUR);

1
对于文件长度,可以使用 lseek(fd, 0, SEEK_END); - SF.
顺便问一下,使用 fstat 还是 lseek 更好获取文件大小? - Yi Lin Liu
@SF。请注意,如果文件描述符尚未位于文件末尾,则此操作也会将其移动到文件末尾,这可能不是您想要的结果。 - sagivd
6
@YiLinLiu:看起来fstat获取的文件信息比大小要多得多。如果你只想了解一个文件而不打开它,那么使用stat;如果你打开文件并且只需要大小,则使用lseek;如果你打开文件并且需要更多信息而不仅仅是大小,则使用fstat。 - SF.

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