2016-02-26 7 views
4

Заявление"кошка/DEV/случайное" против "хвост -f/Dev/случайной"

cat /dev/random 

продолжает производить вывод, как и ожидалось, но

tail -f /dev/random 

виснет (по крайней мере на OSX и SUSE). Почему последний оператор висит?

+0

Не программирование, но прочитайте страницу руководства для хвоста, и вы поймете, что он делает. Это не кошка. –

+0

Не уверен, что вы используете/dev/random, но вы, вероятно, хотите/dev/urandom. – voutasaurus

ответ

8

tail -f делает несколько вещей:

  1. найти конец потока, либо чтение до достижения EOF или делать стремиться к концу (операция не доступна на /dev/random).
  2. Резервное копирование определенной длины (возможно, путем сохранения буфера соответствующей длины содержимого, недавно прочитанного, возможно, путем сохранения списка позиций поиска для последних N строк во время первоначального сканирования или каким-либо другим способом) и печати содержимое между этой точкой и концом.
  3. Продолжайте печатать новое содержимое, прошедшее после этого момента, поскольку такое содержимое становится доступным.

Если нет конца - как в случае с /dev/random - этот первый шаг никогда не будет завершен.

cat не нужно искать конец, чтобы отскакивать от него, и поэтому у него нет точки отказа.

 Смежные вопросы

  • Нет связанных вопросов^_^