Pseudoterminales



Subsecciones
Casiano Rodríguez León
2010-03-22
a bc de Unix. La sesión calcula el factorial de un número enviando sucesivas entradas a bc y obteniendo sus resultados:

lhp@nereida:~/Lperl/src/ipcrun$ cat -n fact.pl
 1  #!/usr/bin/perl -w
 2  use strict ;
 3  use IPC::Run qw( start timeout ) ;
 4
 5  die "usage: $0 <num>\n\nwhere <num> is a positive integer\n" unless @ARGV ;
 6  my $i = shift ;
 7  die "\$i must be > 1, not '$i'" unless $i =~ /^\d+$/ && $i > 1 ;
 8
 9  my ( $in, $out ) ;
10
11  my $h = start ['bc'], \$in, \$out, timeout( 5 ) ;
12
13  $in = "fact = i = $i ; i\n" ;
14
15  while () {
16     $out = '' ;
17     $h->pump until $out =~ s/.*?([-+]?\d+)\n/$1/g ;
18     print "bc said: $out\n" ;
19     if ( $out  <= 0 ) {
20        print "result = ",-$out,"\n" ;
21        $in = undef ;
22        last ;
23     }
24     elsif ( $out eq '2' ) {
25        ## End of calculation loop, get bc to output the result
26        $in = "-fact\n" ;
27     }
28     else {
29        $in = "i = i - 1 ; fact = fact * i ; i\n" ;
30     }
31  }
32
33  $h->finish ;
Para detectar el final hacemos que la calculadora devuelva el resultado cambiado de signo (línea 26). Al ejecutar obtenemos la salida:
lhp@nereida:~/Lperl/src/ipcrun$ ./fact.pl 6
bc said: 6
bc said: 5
bc said: 4
bc said: 3
bc said: 2
bc said: -720
result = 720

Casiano Rodríguez León
2010-04-19
BORDER="0" SRC="monk.gif" ALT="perlmonks">perldocgoogleetsiiullpcgull
Sig: Introducción a la Programación Sup: Pseudoterminales Ant: Pseudoterminales
Casiano Rodríguez León
2010-05-05
oodle">psmodulosperlmonksperldocperlcriticpbpgoogle code project hostingintro a PerlModern Perlblogsgoogleetsiiullpcgull
Sig: Ejemplo: Comunicación Bidireccional con Sup: Comunicación Bidireccional con Open2 Ant: Ejemplo: El Módulo IPC::PerlSSH
Casiano Rodríguez León
2011-04-11
MG WIDTH="27" ALIGN="BOTTOM" BORDER="0" SRC="google-code-project-hosting.jpeg" ALT="google code project hosting">intro a PerlModern Perlblogsgoogleetsiiullpcgull
Sig: Práctica: Modificaciones a PerlSSH Sup: Comunicación Bidireccional con Open2 Ant: Comunicación Bidireccional con Open2
Casiano Rodríguez León
2011-06-03