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

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

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

那么包括fseek (ANSI C的东西?),我应该用它来实现tail ? 他们之间有什么大不同吗?

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

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

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