陈述

cat /dev/random

保持预期的产量,但是
tail -f /dev/random

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

最佳答案

tail -f做几件事:

  • 通过读取直到到达EOF或对末尾进行查找来查找流的末尾(/dev/random上不可用的操作)。
  • 备份一定长度(可能通过保留最近读取内容的适当长度的缓冲区,可能通​​过保留初始扫描过程中最后N行的查找位置列表,或通过其他方式),并打印内容在那一点和终点之间。
  • 在可用的内容之后继续打印新内容。

  • 如果没有尽头(就像/dev/random一样),那么第一步将永远无法完成。
    cat不需要寻找一个终点来寻求回头,因此它没有关联的故障点。

    关于linux - "cat/dev/random"与"tail -f/dev/random",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35658769/

    10-16 07:06