Leser: 2
|< 1 2 >| | 17 Einträge, 2 Seiten |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sub getSemaphor {
my $fn = shift; # Dateiname
open (SEM, "< $fn");
flock( SEM, LOCK_EX);
my $sem = <SEM>;
close( SEM );
return $sem;
}
sub setSemaphor {
my $fn = shift; # Dateiname
my $sem=getSemaphor($fn);
open (SEM, "> $fn");
flock( SEM, LOCK_EX);
print SEM ++$sem; # Semaphor erhöhen und schreiben
close( SEM );
return $sem;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/perl
use strict;
use warnings;
use Fcntl qw/:DEFAULT :flock/;
print "$$: Before open.\n";
sysopen (FILE, 'lockedfile', O_RDWR | O_CREAT) or die "$$: cannot open file: $!\n";
### Einfacher, legt die Datei aber nicht an, wenn sie noch nicht existiert:
# open FILE, '+<', 'lockedfile' or die "cannot open file (proc $$): $!\n";
print "$$: Before flock.\n";
flock FILE, LOCK_EX;
print "$$: Writing to file.\n";
print FILE "Here is process $$.\n";
print "$$: Sleeping.\n";
sleep 30;
print "$$: Closing file.\n";
close FILE;
print "$$: Finished.\n";
|< 1 2 >| | 17 Einträge, 2 Seiten |