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: Sv: Re: [PERL] Kan man gennemtvinge en close()?



On Fri, Oct 25, 2002 at 10:52:38AM +0200, sslug@sslug wrote:
> 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.

En 'tail -f' bliver aldrig færdig, hen hvis dit problem er at det program du
kører ikke lukkes ned, når du lukker din ende af pipen, så bliver du jo nødt
til at selv få det lukket ned.

> > 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;

Det kunne f.eks. gøres ved et par ændringer i ovenstående kode.

my $pid = open TEST,.....
....
close TEST;
kill 3, $pid;

Hvor du nu sender en sigquit til programmet, hvilket svarer til hvad du
normalt ville sende fraa en konsol vha. ctrl-c.

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 .