gpt4 book ai didi

c - 你将如何有效地实现tail?

转载 作者:IT王子 更新时间:2023-10-29 00:26:18 27 4
gpt4 key购买 nike

在 *NIX 中实现 tail 的有效方法是什么?我想出了(写)了两个简单的解决方案,都使用一种循环缓冲区将行加载到循环结构中(数组 | 双链接循环列表 - 为了好玩)。我已经在 busybox 中看到了部分较旧的实现,据我了解,他们使用 fseek 来查找 EOF,然后“向后”读取内容。那里有什么更清洁更快的东西吗?我在面试时被问到这个,提问者看起来并不满意。提前谢谢你。

最佳答案

除了“向前读取数据时保留最新的 N 行”或“从末尾开始向后读取直到读取第 N 行”之外,我认为没有其他解决方案。

重点是您将根据上下文使用一个或另一个。

当tail访问一个随机访问的文件,或者当数据小到可以放在内存中时,“走到最后再往回走”比较好。在这种情况下,运行时间被最小化,因为您扫描必须输出的数据(因此,它是“最佳的”)

你的解决方案(保留最新的 N 行)在 tail 被管道馈送或数据巨大时更好。在这种情况下,其他解决方案会浪费太多内存,因此不切实际,并且在源比尾慢(很可能)扫描所有文件的情况下并不重要。

关于c - 你将如何有效地实现tail?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10164597/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com