`fseek`,`lseek`,`seekg`,`seekp`之间有什么区别?

时间:2012-02-19 13:16:48

标签: c++ c file-io

面试官问我,我将如何实现tail(是的,linux shell中的那个)。我的回答是,首先寻找到文件的末尾,然后逐个读取字符,如果遇到\n,意味着一行失效,等等等等。我认为我的答案是正确的。

然后我发现了这个问题,我应该用它来实现tail?我以为我可以简单地使用seekg(C ++的东西?),但有人告诉我应该使用lseek(linux系统调用?)。

那么包括fseek(ANSI C的东西?),我应该使用哪一个来实现tail? 它们之间有什么大的区别吗?

1 个答案:

答案 0 :(得分:15)

使用C ++ IOstreams库时使用seekgseekp在这里没用,因为它设置了put指针。

使用C stdio库时使用fseek。使用低级POSIX文件描述符I / O时使用lseek

各种搜索功能之间的区别仅在于它们运行的​​文件/流对象的类型。在Linux上,seekgfseek可能是以lseek实现的。