/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
flock
Fra : Lars Kim Lund


Dato : 01-01-01 18:45


Hej og godt nytår.

Har et problem med et cgi-script der benytter en datafil. Jeg flock'er
filen, men tilsyneladende sker der ting og sager hvis to instanser af
scriptet får fat i datafilen på samme tid. (Den læser indholdet, laver
et eller andet og skriver en ny fil).

open (FILE, "foo.txt") or die();
flock (FILE, 2);

do_stuff;

flock (FILE, 8);
close FILE;

Meningen var at den skulle låse filen eksklusivt (så andre ikke kunne
ændre i filen før den var unflock'et), men det virker ikke.

Hvad gør jeg forkert?

--
Lars Kim Lund
http://www.net-faq.dk/

 
 
Jens Kristian Soegaa~ (01-01-2001)
Kommentar
Fra : Jens Kristian Soegaa~


Dato : 01-01-01 19:23

Lars Kim Lund <larskim@mail.com> writes:

> open (FILE, "foo.txt") or die();
> flock (FILE, 2);

Her glemmer du vel at checke hvad flock returnerer?

Prøv at læs:

perldoc perlfunc
(afsnittet om flock)

og

perldoc perlfaq5
(afsnittet om file locking)

Der kan, så vidt jeg husker, være problemer med at låse filer på
Windows systemet.

--
Jens Kristian Søgaard,
jk@soegaard.net -- http://www.jksoegaard.dk/
Søger du noget? -- http://www.google.com/
echo|perl -ple'$_+=4E-6*!int rand()**2+rand()**2while$i++-1E6'

Lars Kim Lund (01-01-2001)
Kommentar
Fra : Lars Kim Lund


Dato : 01-01-01 20:09

Hej Jens Kristian Soegaard <jk@soegaard.net>

>> open (FILE, "foo.txt") or die();
>> flock (FILE, 2);
>
>Her glemmer du vel at checke hvad flock returnerer?

Akja, hvis man ikke checker om flock går godt så fortsætter den bare?

Dvs. noget i retningen flock (FILE,2) or die (); ?

Er der noget indbygget så man kan få den til at vente på at filen
bliver unlocked eller skal man skrive en sub til at håndtere det?

>Prøv at læs:
>
> perldoc perlfunc
> (afsnittet om flock)
>
>og
>
> perldoc perlfaq5
> (afsnittet om file locking)

Det har jeg gjort.

>Der kan, så vidt jeg husker, være problemer med at låse filer på
>Windows systemet.

Det er på en BSD-ting.

--
Lars Kim Lund
http://www.net-faq.dk/

Jens Kristian Søgaar~ (01-01-2001)
Kommentar
Fra : Jens Kristian Søgaar~


Dato : 01-01-01 23:52

Lars Kim Lund <larskim@mail.com> writes:

> >> flock (FILE, 2);

> >Her glemmer du vel at checke hvad flock returnerer?
> Akja, hvis man ikke checker om flock går godt så fortsætter den bare?

Ja, selvfølgelig

> Dvs. noget i retningen flock (FILE,2) or die (); ?

Tjah, jeg vil nok foretrække, at du skrev fejlmeddelelsen ud på
skærmen, så man kunne se, hvad der foregik. På samme måde som jeg
ville foretrække at bruge LOCK_EX og LOCK_UN istedet for 2 og 8.

I øvrigt: Har du husket at _alle_ programmer der tilgår filerne skal
bruge flock()? (også dem der læser - de kan bruge LOCK_SH).


--
Jens Kristian Søgaard,
jk@soegaard.net -- http://www.jksoegaard.dk/
Søger du noget? -- http://www.google.com/
echo|perl -ple'$_+=4E-6*!int rand()**2+rand()**2while$i++-1E6'

Lars Kim Lund (02-01-2001)
Kommentar
Fra : Lars Kim Lund


Dato : 02-01-01 00:33

Hej Jens Kristian Søgaard <jk@soegaard.net>

>I øvrigt: Har du husket at _alle_ programmer der tilgår filerne skal
>bruge flock()? (også dem der læser - de kan bruge LOCK_SH).

Ja, det mener jeg helt bestemt. Men jeg checker ikke returkoder, jeg
troede det var "indbygget" i flock at den ventede til filen var klar.

Tja, men jeg har i hvert fald fundet fejlen. Tak.

--
Lars Kim Lund
http://www.net-faq.dk/

Thorbjørn Ravn Ander~ (02-01-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 02-01-01 21:05

Lars Kim Lund wrote:

> Hvad gør jeg forkert?

Gæt: Bruger tal istedet for symbolske konstanter?

--
Thorbjørn Ravn Andersen "...and... Tubular Bells!"
http://bigfoot.com/~thunderbear

Søg
Reklame
Statistik
Spørgsmål : 177547
Tips : 31968
Nyheder : 719565
Indlæg : 6408797
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste