Итак продолжим рассматривать методы модуля IO::Pty.
$pty = IO::Pty->new
Метод new() не принимает параметров и возвращает новый объект псевдотерминала. Возвращенный объект представляет собой дескриптор файла, соответствующий управляющему концу канала. В сценарии этот дескриптор файла обычно применяется для отправки команд и чтения результатов из выполняемой программы.
$tty = $pty->slave
Метод slave() псевдотерминала, созданного с помощью вызова метода IO::Pty->new( ) - возвращает дескриптор файла того конца канала, который относится к терминальному устройству. Обычно этот дескриптор файла передается управляемой программе.
Рассмотрим общую схему запуска программы под управлением псевдотерминала. Подпрограмма принимает имя выполняемой локальной команды и список параметров, который должен быть передан этой команде. Работа сценария начинается с создания дескриптора файла псевдотерминала с помощью метода IO::Pty->new( ). В случае успеха выполняется функция fork() и родительский процесс возвращает дескриптор файла псевдотерминала вызывающей процедуре. Однако дочерний процесс должен выполнить еще некоторые дополнительные действия. Вначале выполняется отсоединение от текущего управляющего терминального устройства путем вызова метода P0SIX::setsid().
Следующий этап состоит в получении дескриптора файла того конца канала, который относится к терминальному устройству, путем вызова метода slave() объекта IO::Pty, а затем закрытии конца канала, относящегося к псевдотерминалу.