面试官问我,我将如何实现tail
(是的,linux shell中的那个)。我的回答是,首先寻找到文件的末尾,然后逐个读取字符,如果遇到\n
,意味着一行失效,等等等等。我认为我的答案是正确的。
然后我发现了这个问题,我应该用它来实现tail
?我以为我可以简单地使用seekg
(C ++的东西?),但有人告诉我应该使用lseek
(linux系统调用?)。
那么包括fseek
(ANSI C的东西?),我应该使用哪一个来实现tail
?
它们之间有什么大的区别吗?
答案 0 :(得分:15)
使用C ++ IOstreams库时使用seekg
。 seekp
在这里没用,因为它设置了put指针。
使用C stdio库时使用fseek
。使用低级POSIX文件描述符I / O时使用lseek
。
各种搜索功能之间的区别仅在于它们运行的文件/流对象的类型。在Linux上,seekg
和fseek
可能是以lseek
实现的。