Thread readdir -> Änderungen im Verzeichnis (12 answers)
Opened by Cappu at 2009-08-13 21:50

sid burn
 2009-08-13 23:29
#124221 #124221
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Ich habs glaube ich etwas besser getestet als meine beiden vorherigen Poster. Am besten ist es für den test einen eigenen ordner zu erstellen.
Hier die Testdatei.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
my @files = 1 .. 1_000;
system "touch $_" for @files;

opendir my $dh, '.'  or  die $!;
my $first = readdir $dh;

print "Sleeping...\n";
sleep 5;
unlink for @files;

my @exists;
while ( my $file = readdir $dh ) {
    push @exists, $file;
}
closedir $dh  or die $!;

print "Count: ", scalar @exists + 1, "\n";
print "$first @exists\n";


Die datei geht zuerst hin und erzeugt 1.000 Dateien. Danach wird ein einziger Eintrag ausgelesen. Danach werden alle erzeugten 1.000 Dateien wieder gelöscht.

Das nur ein eintrag ausgelesen wird, und dann gelöscht wird, soll halt simulieren das es parallel läuft, und ein anderer prozess während des lesens einzelne Dateien löschen kann.

Danach warte ich mit sleep kurz 5 sekunden. Das ist eigenltich nur drin damit man sich händisch davon überzeugen kann "ls -l | wc -l" das auch 1000 dateien erzeugt wurden.

Danach lese ich den Rest des verzeichnisses aus, und pushe es in ein array.

Zum schluss gebe ich die anzahl aus wieviele Einträge gefunden wurde. "+1" deswegen da das einzelne readdir mit eingebunden wird.

Ausgabe, des Programmes.

Code: (dl )
1
2
3
4
sidburn@sid:~/perl/foo$ ./readdir.pl 
Sleeping...
Count: 171
. .. 151 372 498 924 206 620 28 24 458 794 290 666 768 843 826 967 867 260 786 456 249 615 985 344 38 998 289 224 552 892 475 287 148 250 825 331 47 303 636 854 277 279 660 723 353 460 761 970 171 785 801 697 512 787 656 520 123 150 408 940 376 152 706 743 443 942 959 910 410 301 576 611 86 57 775 10 896 922 161 8 663 506 680 834 101 264 429 41 619 108 212 609 295 365 990 481 61 908 333 799 994 147 721 469 561 404 538 647 255 119 387 181 34 70 221 667 326 808 14 931 894 981 116 983 291 370 540 9 863 952 267 30 601 546 251 324 991 589 228 7 442 486 674 299 50 507 806 434 464 755 884 586 113 423 6 904 578 247 166 946 338 861 911 1 798 462 736 777 readdir.pl


Erklärung dazu gibt es im nächsten Commit.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread readdir -> Änderungen im Verzeichnis