【问题标题】:"cat /dev/random" versus "tail -f /dev/random"“cat /dev/random”与“tail -f /dev/random”
【发布时间】:2016-02-26 18:09:16
【问题描述】:

声明

cat /dev/random

按预期继续产生输出,但是

tail -f /dev/random

挂起(至少在 OSX 和 SUSE 上)。 为什么后面的语句挂了?

【问题讨论】:

  • 不是编程,但是阅读tail的手册页,你就会明白它的作用。这不是猫。
  • 不确定你使用 /dev/random 做什么,但你可能想要 /dev/urandom 。

标签: linux shell unix random tail


【解决方案1】:

tail -f 做了几件事:

  1. 通过读取直到到达 EOF 或通过搜索到末尾(/dev/random 上不可用的操作)来查找流的结尾。
  2. 备份一定长度(可能通过保留最近读取的内容的适当长度的缓冲区,可能通​​过在初始扫描期间保留最后 N 行的查找位置列表,或通过其他方式),然后打印该点和结尾之间的内容。
  3. 当这些内容可用时,继续打印超过该时间点的新内容。

如果没有尽头——就像/dev/random 一样——第一步永远不会完成。

cat 不需要寻找终点来回溯,因此它没有关联的故障点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 2012-06-10
    • 2013-02-02
    • 1970-01-01
    相关资源
    最近更新 更多