libfilo is a small portable library to do userspace file locking, like fcntl(), lockf() or flock(), but within threads.
If you want multiple threads to access a file simultaneously, you will probably need some kind of locking to avoid them stepping on each other and corrupting everything. Currently, there is no standard way of doing this:
· fcntl() ignores threads, and only works between processes.
· flock() is not really standard and doesn't work well over NFS.
· lockf(), while it is documented in POSIX, it's often implemented using fcntl() so it's also useless.
So this library allows you to do read/write file locking with byte granularity and fcntl-like semantics, within threads. It's written in C, in about 600 lines of code, and has no dependencies on external libraries.
It's based on the traditional POSIX API and follows the Single UNIX Specification, so it should be portable to all major UNIX variants without problems; however it's developed under Linux, so please let me know if you try it somewhere else.