OS X: $ cat /dev/random просит меня распечатать

Когда я бегу:

$ кот /dev/случайный

в OS X 10.9 через короткий промежуток времени появляется диалоговое окно печати с вопросом, хочу ли я печатать тарабарщину (iTerm2).

Используя родное терминальное приложение, оно просто вылетает.

Я понимаю, что /dev/random производит шум, но почему это диалоговое окно печати появляется случайным образом и почему происходит сбой родного терминального приложения?


person user1371383    schedule 10.12.2013    source источник
comment
Я думаю, что есть последовательность управления терминалом, которая заставляет принтер печатать что-то, но маловероятно, что она будет производиться каждый раз, когда вы запускаете команду /dev/random и всегда через короткий промежуток времени.   -  person jwodder    schedule 11.12.2013
comment
Верно. Я попробовал cat /dev/random, и примерно через 10 секунд тарабарщины Terminal.app умер, и мне пришлось перезапустить его.   -  person rob mayoff    schedule 11.12.2013
comment
Интересно, что управляющая последовательность будет интерпретироваться, а не просто отображаться. Я предположил, что это для других вещей, таких как предупреждения, хотя вы могли бы представить, что он проверяет, что это такое, и печатает его на терминале, если это не управляющий сигнал. Следовательно, это значит, что можно заставить ОС печатать через терминальное приложение? Довольно круто.   -  person user1371383    schedule 11.12.2013
comment
@ user1371383: управляющие последовательности, такие как позиционирование курсора, работают точно так же, как работают программы, которые рисуют на экране, например редакторы. Вы можете найти больше информации по этой теме здесь: en.wikipedia.org/wiki/Terminal_capabilities   -  person Perry    schedule 12.12.2013


Ответы (1)


Вы случайно споткнулись о концепции нечеткого тестирования (http://en.wikipedia.org/wiki/Fuzz_testing), в котором программное обеспечение тестируется с использованием случайных входных данных, чтобы заставить его аварийно завершать работу или действовать неожиданно.

Действующий механизм заключается в том, что терминальное приложение интерпретирует каждый отправляемый им символ, чтобы увидеть, должно ли оно выполнять какую-либо специальную функцию, такую ​​как выделение текста жирным шрифтом, звонок в «звонок» или даже печать экрана.

Сообщайте о любых обнаруженных ошибках разработчикам программного обеспечения (хотя обычная реакция на ошибки, обнаруженные в ходе фазз-тестирования, звучит так: «Ну, не делайте этого»).

person Perry    schedule 11.12.2013
comment
Но если есть есть управляющая последовательность для печати экрана, то iTerm2 ведет себя как надо. Единственная ошибка в программе, которая дает сбой, и это сделано Apple. - person jwodder; 11.12.2013