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
34
35
|
This is my first alpha release of File::Lock, my version of the code
greatfully provided by Jarrko. I've mucked about with it quite a bit,
and there are a few policy decisions you might not agree with:
All of the locking functions (see t/* for full details),
File::lock::(lockf/flock/fcntl) are not exported from File::Lock. They all
take the same set of arguments: FileHandle, mode, pos, whence, length.
(Except for lockf, which doesn't take the position arguments.) Mode is two
characters, and can be "wb" for write-lock/non-blocking, or "rn", for
read-lock/blocking. Most other characters will work fine. (Look in typemap)
pos, whence, and length default to "the whole file". Use "u" to unlock a
handle.
The only OO interface is via "new File::Lock()" which uses
File::Lock::fcntl. If it were working properly, then the lock would be
unlocked on destruction. But it isn't.
File::Lock::lockfile isn't written yet, but will be.
You can use a mode of "t" or "i" to get info/test a lock. fcntl in array
context will return an array consisting of all the usual fcntl data.
In any other case, a single letter is returned, "u", "w", or "r",
for the detected locking mode. (or unlocked.)
All calls return true if successful. Currently no mucking about with errno
is done, so it might not be the same for the same condition on all systems.
If you need real fcntl() and it's constants, use Fcntl. File::Lock does
optionally export SEEK_*, and LOCK_EX|UN|SH, though. (I don't remember why,
though, on the latter.)
Any comments, complaints, or bug patches would be greatly appreciated.
--
Kenneth Albanowski (kjahds@kjahds.com, CIS: 70705,126)
|