(Don't worry about lockf: you want flock)
There are a few things we need to know:
- What system is this on?
- Are you opening it with write access?
- How do you know that the lock is succeeding?
- How do you know it is not locking the file?
- Does $! tell you anything?
- Is this a cgi script?
Things to try:
- Make sure your system supports file locking!
- Check the return values of everything
- Open with explicit read/write access
- Try shared and exclusive locks
Here's simple code for a lock:
open(LOCKME, "+< $file_to_lock") or die "No open $!\n";
flock(LOCKME, LOCK_EX) or die "No lock $!\n";
sleep(20); ## Have another process test the lock now...
close(LOCKME) or die "No close $!\n";
Note that close dissolves the lock for you, so you don't
need to use flock to unlock it.
|