“cat / dev / random”与“tail -f / dev / random”

声明

cat /dev/random 

如预期的那样保持产出,但是

 tail -f /dev/random 

挂起(至less在OSX和SUSE上)。 为什么后者的声明挂起?

tail -f做几件事情:

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

如果没有结束 – 就像/dev/random – 第一步将永远不会完成。

cat不需要找到结束,因此它没有关联的故障点。