- Read
- Acquire a read lock.
- Write
- Acquire a write lock.
Acquiring a lock can be done for a read or a write lock. Multiple locks on a file can exist as long as they are all read locks. When a write lock is involved, no other lock can exist. It is possible to acquire a lock in 2 ways:
int fd = open ("file.name");
FileLocker lock(fd);
if (lock.acquire()) {
... do something with the file ...
lock.release();
}else{
cout << lock.lastMessage() << endl;
}
Construct the FileLocker object for the given file descriptor. This can be used to lock a segment of the given file. The segment is given by start and length. Length=0 means till the end of the file.
Acquire a write or read lock. nattempts defines how often it tries to acquire the lock. A zero value indicates an infinite number of times (i.e. wait until the lock is acquired). A positive value means it waits 1 second between each attempt.
Release a lock. The return status indicates if an error occurred.
Test if the file can be locked for read or write. Optionally the PID of the process holding the lock is returned.
Test if the process has a lock for read or write on the file.
Get the fd in use.
Get the last error.
Get the message belonging to the last error.