Maik Görgens: noch einmal wegen 'flock() beachten'

Hallo!

Ich habe weiter unten schonmal gefragt, wie ich andere Perl-Skripten dazu bringe, das sie beachten, wenn ich eine Datei mit flock() Lese- und Schreibgeschützt habe.

Man sagte mir, das es Perl von alleine tut, aber das ich es doch einfach mal ausprobieren solll. So hab ich mal 2 Skripten geschrieben (die ich auf meinem Webserver laufen lassen muß, weil ich hier nur Win95 habe):

######################################################################
Skript 1:

#!/usr/bin/perl

use Fcntl ':flock';
print "Content-Type: text/html\n\n";

open(D, '<test.dat');
flock(D, 2);

sleep(20);

$data = join("", <D>);

close(D);

print $data;

######################################################################
Skript 2:

#!/usr/bin/perl

open(D, '>>test.dat');

print D 'Hallo Welt die zweite';

close D;

print "Content-Type: text/html\n\nText geschrieben";

######################################################################
test.dat

Hallo Welt die erste

######################################################################

Nun rufe ich erst Skript 1 auf und kurz drauf Skript 2. Nun sollte es ja so sein, das Skript 2 mit dem Schreiben wartet, bis Skript 1 gelesen hat, so das Skript 1 nur 'Hallo Welt die erste' ausgibt. Tut es aber nicht, sondern gibt auch 'Hallo Welt die zweite' mit aus, das heißt, Skript 2 hat schon geschrieben.

Haben meine Programme einen Fehler, oder beachtet Perl doch nicht, wenn ich eine Datei geschützt habe? Kann mir da noch einmal jemand helfen? Weiß jemand, wie ich ein Programm dazu bringe, das es beachtet, wenn eine Datei mit flock geschützt wurde?

Vielen Dank schonmal im Vorraus
Gruß Maik

  1. Hallöle!

    Ich habe weiter unten schonmal gefragt, [...]

    Genau! Somit ist dein Thread hier: [pref:t=48674&m=265508]. Warum? Darum: </faq/#Q-06c>!

    File Griese,

    Stonie

    --
    sh:) sh:| fo:) ch:) rl:| br:< ie:% mo:} va:| de:[ zu:) fl:( ss:{ ls:# js:| - Noch Fragen?