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
