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
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?
Casiano Rodríguez León