SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Re: [PERL] Kan man gennemtvinge en close()?



On Fri, Oct 25, 2002 at 10:22:58AM +0200, sslug@sslug wrote:
> Hej liste,
> 
> Jeg har åbnet et program for at grabbe linier fra dets output, men
> programmet bliver aldrig færdigt (er et program der monitorerer en TSM
> server) og man kan ikke sende komandoer til det. Derfor kan jeg ikke
> lukke min "pipe" igen, da close() venter på at programmet skal lukke.
> 
> Er der en måde jeg kan tvinge close() til at lukke min pipe selv om
> programmet ikke er lukket?

Jeg forstår ikke helt hvad problemet består i - vil programmet du starter
ikke afslutte, eller hvad sker der?

> Sample kode her:
> ---
> $username = "********";
> $password = "********";
> $execute = "dmsamdc";
> open(CONSOLE, "$execute -id=$username -pass=$password -console |");
> while (<CONSOLE>)
> {
>   .
>   ...Mere kode her...
>   .
>   if (/^(ANR0985I Process $process_id)/)
>   {
>     close(CONSOLE);
>   }
> }

Jeg lavede lige et lille test program her, som umiddelbart fungerer fint:

open TEST, "tail -f /var/log/messages|" or die "Could not start it: $!\n";
my $i=0;
while (<TEST>)
{
  print;
  last if ($i++==15);
}
close TEST;

Den eneste ændring jeg har lavet er at hoppe ud af løkken før jeg kører
lukker for det filehandle.

MVH David


 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:54
Denne side vedligeholdes af MHonArc .