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] eksikvering af eksterne programmer med system()



> >    #!/usr/bin/perl -w
> >    system('firstprog');
> >    system('secondprog');
> >    system('thirdprog');
> 
> Jeg har måske misforstået noget mht system() kommandoen. Jeg var ikke
> klar over at system() først returnerede, når programmet var færdigt. Jeg
> var bange for at alle 3 programmer i dit eksempel ville starte
> sideløbende, men det gør de åbentbart ikke.

Nej, i ovenstående eksempel venter de tre programer pænt på hinanden.
Hvis man vil starte programmerne så de kører sideløbende skal man skrive
noget i stil med

   do {system('firstprog'); exit()}  if fork eq "0";
   do {system('secondprog'); exit()} if fork eq "0";
   do {system('thirdprog'); exit()}  if fork eq "0";

eller endda

   exec('firstprog') if fork eq "0";
   etc.

> Helt konkret, skal jeg ændre i en tekstfil og det dur ikke at alle 3
> programmer laver ændringer samtidigt og derefter overskriver, hvad
> hinanden har lavet. Derfor er jeg nødt til at være sikker på, at første
> program er færdigt, før det næste går i gang.

Så skal du bare bruge system(). Vær lige opmærksom på at hvis du har
brug for at kigge på de returkoder programmerne afslutter med, så skal
du dividere system()'s returværdi med 256.

> Kan man udgive et perl-program under GPL?

Selv om Perl's source er under The Artistic License, kan du godt
GPL'e de programmer du selv skriver i perl.

 - Peter

-- 
ln -s /dev/random ~/.plan


 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

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