[perl] escritura de archivos dentro de ciclos while infinitos

Bolo Lacertus lacertus@servidor.unam.mx
Thu, 25 Jan 2001 15:13:17 -0600


Saludos!

La mayoría de los UNIX usan buffers de escritura para archivos, hay por
ahi una función de "flush" para solicitar que se vacíen esos buffers
pero por el momento no recuerdo cual es.

El problema de tu programa podría ser que no este sacando los letreros a
tiempo para que los veas y terminas el programa antes de que se llenen
los buffers y se realicen las escrituras.

Una forma sencilla de evitar esto, que es práctica para programas que
pasan la mayor parte del tiempo esperando el siguiente momento de
actividad es abrir y cerrar el archivo por cada ciclo (esto
necesariamente vacía los buffers).

"Von Eckenbrecher, Alejandro" wrote:
> #!/usr/local/bin/perl
> 
> open mal,"> estadoth.dat";
> open log1,">> cambioth.log";
> while (1){
> sleep (10);
> print mal "prueba \n";
> print log1 "prueba1\n";
> }


tu programa quedaría:
#!/usr/local/bin/perl
while (1){
  open mal,"> estadoth.dat";
  open log1,">> cambioth.log";
  print mal "prueba \n";
  print log1 "prueba1\n";
  close(mal);
  close(log1);
  sleep (10);
}


Desperdicia tiempo de procesador, pero este tipo de programas no suelen
tener eso como una preocupación primordial.

Daniel Sol
--
Bolo Lacertus: lacertus@servidor.dgsca.unam.mx		==~\___\
http://proteo.dgsca.unam.mx/cgi-bin/lacertus/hola	 =__vvvv
--------- Pie de mensaje --------------------------------
Visite: http://tlali.iztacala.unam.mx/~randrade/perl.shtml
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text   : unsubscribe perl