Итак, я пытаюсь запустить отладчик Perl внутри другого отладчика Perl. Я продолжаю читать tty в perl, это решение. Может кто-нибудь объяснить мне, что означает tty (это тип терминала?) и чем он полезен? Вот где я это прочитал: http://search.cpan.org/~rjbs/perl-5.18.0/lib/perl5db.pl#$CreateTTY Причина, по которой я пытаюсь использовать tty, заключается в том, что я задал этот вопрос: Передать аргумент в файл perl в отладчике и установить точку останова в файле, выполняемом системой Спасибо всем, кто ответил, чем больше вы, ребята, говорите мне, что это такое, тем лучше я понимаю идею :)
TTY на perl, объяснение и несколько примеров
Ответы (1)
TTY (сокращение от телетайпа) — это, по сути, специальный дескриптор входного или выходного файла, который подключается к терминалу, а именно пользовательский ввод. Для получения подробной информации см.:
Это то, что вам нужно знать для начала (трудно сказать больше, так как вы не объяснили, что вам нужно делать с TTY):
В Unix он обычно сопоставляется с
/dev/tty
устройством или подобнымВы можете проверить его использование
-t
в Perl
Что касается отладчика, нужно знать как минимум 2 вещи (если вы собираетесь играть с TTY, последний абзац самый важный). Все данные взяты из perldoc perldebug.
p expr
печатает в дескриптор файла$DB::OUT
(НЕSTDOUT
), который, в свою очередь, открыт для/dev/tty
.Я думаю, что это может контролироваться параметром
LineInfo
изPERLDB_OPTS
, но никогда не играл с ним, так что не уверен.На это могут повлиять следующие параметры
$ENV{PERLDB_OPTS}
:TTY — TTY, используемый для отладки ввода-вывода.
noTTY — если установлено, отладчик переходит в непрерывный режим и не подключается к TTY. В случае прерывания (или если управление переходит к отладчику через явную настройку $DB::signal или $DB::single из сценария Perl), он подключается к TTY, указанному в параметре TTY при запуске, или к tty, найденному в среды выполнения с помощью модуля
Term::Rendezvous
по вашему выбору.Этот модуль должен реализовать метод с именем new, который возвращает объект двумя методами: IN и OUT. Они должны возвращать дескрипторы файлов для использования для отладки ввода и вывода соответственно. Новый метод должен проверять аргумент, содержащий значение $ENV{PERLDB_NOTTY} при запуске или "$ENV{HOME}/.perldbtty$$" в противном случае. Этот файл не проверяется на право собственности, поэтому теоретически возможны угрозы безопасности.