【发布时间】:2012-04-27 05:17:33
【问题描述】:
在*NIX 中实现tail 的有效方法是什么? 我想出了(写)两个简单的解决方案,都使用一种循环缓冲区将行加载到循环结构中(数组|双向链接循环列表-为了好玩)。 我在busybox中看到了部分较旧的实现,据我所知,他们使用 fseek 来查找EOF,然后“向后”读取内容。那里有什么更清洁、更快的东西吗? 我在面试时被问到这个问题,提问者看起来并不满意。提前谢谢你。
【问题讨论】:
-
我喜欢这个问题,因为这是学习编程(以及一般的系统知识)时非常重要的一课。有些操作本质上不可能高效地完成,至少没有给出您正在使用的数据的标准表示(在这种情况下,是从头开始的线性字节流文件)。学习简单地从数据的格式中识别这一点,并避免将无法有效协同工作的数据和操作配对,是学习编写高效软件的关键部分。