Thread DIR bzw. FILE sperren?: flock(...); (10 answers)
Opened by BratHering at 2005-11-21 19:58

ptk
 2005-11-22 00:43
#60291 #60291
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Bei Unix ist es so, dass eine Datei unwiderruflich verschwindet, wenn der letzte Link auf sie verschwindet. Solange du dann noch einen FileHandle offen hast, existiert die Datei (irgendwie), aber mit dem close() ist sie weg.

Kleine Demonstration:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
open(X, ">/tmp/bla") or die $!;
print X "hallo";
close X;

# Datei /tmp/bla existiert
system("ls -al /tmp/bla");

open(X, "</tmp/bla") or die $!;
unlink "/tmp/bla"; # letzter Link auf der Festplatte ist weg, aber der Filehandle ist noch da

system("ls -al /tmp/bla"); # findet /tmp/bla bereits nicht

# funktioniert
while(<X>) {
    print STDERR $_, "\n";
}
# funktioniert auch
seek X, 0, 0;
while(<X>) {
    print STDERR $_, "\n";
}
close X; # jetzt ist sie wirklich weg

View full thread DIR bzw. FILE sperren?: flock(...);