TTY на perl, объяснение и несколько примеров

Итак, я пытаюсь запустить отладчик Perl внутри другого отладчика Perl. Я продолжаю читать tty в perl, это решение. Может кто-нибудь объяснить мне, что означает tty (это тип терминала?) и чем он полезен? Вот где я это прочитал: http://search.cpan.org/~rjbs/perl-5.18.0/lib/perl5db.pl#$CreateTTY Причина, по которой я пытаюсь использовать tty, заключается в том, что я задал этот вопрос: Передать аргумент в файл perl в отладчике и установить точку останова в файле, выполняемом системой Спасибо всем, кто ответил, чем больше вы, ребята, говорите мне, что это такое, тем лучше я понимаю идею :)


person ban    schedule 29.07.2013    source источник


Ответы (1)


TTY (сокращение от телетайпа) — это, по сути, специальный дескриптор входного или выходного файла, который подключается к терминалу, а именно пользовательский ввод. Для получения подробной информации см.:


Это то, что вам нужно знать для начала (трудно сказать больше, так как вы не объяснили, что вам нужно делать с TTY):

  • В Unix он обычно сопоставляется с /dev/tty устройством или подобным

  • Вы можете проверить его использование -t в Perl


Что касается отладчика, нужно знать как минимум 2 вещи (если вы собираетесь играть с TTY, последний абзац самый важный). Все данные взяты из perldoc perldebug.

  1. p expr печатает в дескриптор файла $DB::OUT (НЕ STDOUT), который, в свою очередь, открыт для /dev/tty.

    Я думаю, что это может контролироваться параметром LineInfo из PERLDB_OPTS, но никогда не играл с ним, так что не уверен.

  2. На это могут повлиять следующие параметры $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$$" в противном случае. Этот файл не проверяется на право собственности, поэтому теоретически возможны угрозы безопасности.

person DVK    schedule 29.07.2013
comment
Я пытаюсь установить точку останова в файле, который вызывается из другого файла с помощью системной команды - person ban; 29.07.2013
comment
Есть ли способ установить точку останова в файле file2.pl, который вызывается из файла file1.pl с помощью системной команды или команды eval, а затем, когда я запускаю файл1.pl, я ломаюсь в файле2.pl??? - person ban; 29.07.2013
comment
@бан - да. Но ваш вопрос был о том, что такое TTY, а не об установке точек останова. - person DVK; 29.07.2013