En s�b, 2002-01-19 a 22:01, Hue-Bond escribi�:
> $ cat test.pl 
> #!/usr/bin/perl
> sleep (4);
> $a=<STDIN>;
> 
> $ ./test.pl &
> [16] 8500
> $               # pulso enter
> $ 
> $ 
> $ 
> $ 
> $ 
> 
> [16]+  Stopped                 ./test.pl
> $ _
> 
>          El shell detiene al script perl porque el uso de <> necesita un
>      "algo" que no s� bien lo que  es. Lo que quiero es saber c�mo puedo
>      leer una  l�nea de  un descriptor  de archivo sin  que el  shell me
>      suspenda mi script. Adicionalmente me gustar�a que la funci�n fuera
>      bloqueante, o  sea que la  ejecuci�n del  programa al llegar  a ese
>      punto se detuviera  esperando al usuario. read() y  sysread() no me
>      valen porque no leen  una l�nea y adem�s si no  hay datos que leer,
>      la ejecuci�n del script contin�a como si nada. �C�mo hago?

La verdad es que el programa funciona correctamente, pero no hace los
que t� quieres: pruebalo s�n poner & al invocar el programa y ver�s que
no existe ning�n problema.

        Yo dir�a (no soy un experto en shell) que cuando tu programa que est�
en background y quiere realizar una operaci�n de interactividad con el
shell (leer de la consola) la shell lo detecta y lo pone en modo pausa.
Y te lo av�sa para que t� act�es en consecuencia. (pasandolo a
foreground). Si en vez de STDIN usas otro descriptor de fichero, como un
archivo de un directorio, el programa no debe detenerse:

Algo asi:

#!/usr/bin/perl

open FICHERO, "<nombre.fich" or die "no puedo abrir";
sleep(4);
$a=<FICHERO>;


Eso lee el primer caracter. Si quieres m�s.........

Responder a