Leser: 1
9 Einträge, 1 Seite |
sysopen(LOCK, "$verzeichnis/.lock", O_CREAT | O_EXCL | O_WRONLY) or die "wahrscheinlich ist da schon ein anderer Daemon zugange"
QuoteIch stelle aber mit flock oder sysopen sicher, das ein zweiter Prozess meines eigenen Programms NICHT an die Datei rankommt, wenn bereits ein erster Prozess meines eigenen Programms noch dran rum fummelt?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use strict;
use Fcntl qw(F_SETLK F_WRLCK SEEK_SET);
BEGIN {
# c2ph says: typedef='s2 l2 i', sizeof=16
my $FLOCK_STRUCT = 's s l l i';
sub linux_flock {
if (wantarray) {
my ($type, $whence, $start, $len, $pid) =
unpack($FLOCK_STRUCT, $_[0]);
return ($type, $whence, $start, $len, $pid);
} else {
my ($type, $whence, $start, $len, $pid) = @_;
return pack($FLOCK_STRUCT,
$type, $whence, $start, $len, $pid);
}
}
}
if (fork != 0) { # parent
open(BLA, ">/tmp/bla") or die $!;
chmod 02644, "/tmp/bla" or die $!;
warn "lock ...";
fcntl(*BLA, F_SETLK, linux_flock(F_WRLCK, SEEK_SET, 0, 0, 0)) or die $!;
warn "lock done...";
} else {
sleep 1;
warn "try to open in other process";
open(BLA, ">/tmp/bla") or die $!;
warn "open was successful";
}
mount -o remount,mand /
-rw-r-Sr-- 1 nobody nobody 0 Jun 21 16:36 /tmp/bla
9 Einträge, 1 Seite |