El Módulo IO::Pty

El módulo IO::Pty proporciona una interfaz para la creación de objetos seudoterminales.

El siguiente código muestra como crear una seudoterminal y una comunicación elemental con el lado esclavo.

lhp@nereida:~/Lperl/src/perl_networking/ch2$ cat -n pty3.pl
 1  #!/usr/bin/perl -w
 2  use strict;
 3  use IO::Pty;
 4
 5  my $pty = new IO::Pty;
 6
 7  defined(my $child = fork) or die "Can't fork: $!";
 8  if ($child) { # master
 9    foreach my $val (1..10) {
10      print $pty "$val\n";
11    }
12    foreach my $val (1..10) {
13      $_ = <$pty>;
14      print "Master $$: $_";
15    }
16    my $ttyname = <$pty>;
17    print "Master $$: $ttyname";
18  }
19  else {
20    my $slave  = $pty->slave;
21    close($pty);
22    foreach my $val (1..10) {
23      $_ = <$slave>;
24      print "Child $$: $_";
25    }
26    print $slave $slave->ttyname."\n";
27    close($slave);
28  }
Al ejecutar el programa anterior obtenemos la salida:
lhp@nereida:~/Lperl/src/perl_networking/ch2$ ./pty3.pl
Master 16705: 1
Master 16705: 2
Master 16705: 3
Master 16705: 4
Master 16705: 5
Master 16705: 6
Master 16705: 7
Master 16705: 8
Master 16705: 9
Master 16705: 10
Child 16706: 1
Child 16706: 2
Child 16706: 3
Child 16706: 4
Child 16706: 5
Child 16706: 6
Child 16706: 7
Child 16706: 8
Child 16706: 9
Child 16706: 10
Master 16705: /dev/pts/18

Ejercicio 7.1.3   Realice las siguientes actividades:
  1. Ejecute el programa anterior con el depurador
  2. Modifique el programa anterior: Usando el método stty del objeto esclavo (Por ejemplo pty->slave->stty('-echo')) ponga la comunicación en modo -echo. Modifique el programa de modo conveniente. ¿Qué ocurre?

  3. Pruebe a modificar otras características de la terminal. ¿Cómo afecta a la comunicación?

Casiano Rodríguez León
Licencia de Creative Commons
Programación Distribuida y Mejora del Rendimiento
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=44.
2012-06-19