|
|||||||||||||||||||||||||||
Hej David,
Det har jeg også prøvet (også ved at hoppe ud af løkken med en "last"), men det virker ikke i mit tilfælde. close() venter på at mit prog skal blive færdigt. I dit tilfælde vil jeg mene at close() først lukker når tail er færdig, for den bliver vel færdig på et tidspunkt eller (jeg kender ikke tail så godt)? Mit prog (dsmadmc) bliver aldrig færdig da den hele tiden venter på nye beskeder fra TSM serveren.
Mvh
Christian
>
> Fra: sslug@sslug
> Dato: 2002/10/25 Fri AM 10:38:38 CEST
> Til: sslug@sslug
> Emne: 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
>
-------------------------------------------------
WebMail fra Tele2 http://www.tele2.dk
-------------------------------------------------
|
||||||||||||||
|
||||||||||||||