The file lock does not good there. You have the following
race:
- process 1 starts up and decides what file to create
- process 2 starts up and decides to create the same
file.
- process 1 creates the file, and locks it.
- process 2 opens said file and tries to lock it.
- process 1 writes the file and exits.
- process 2 finally gets the file, overwrites what
process 1 does and exits
The fact is that while conceptually file locking is
really simple, virtually nobody gets it right in
practice. What you need to do instead is have a lockfile
that always exists which, before doing operations that you
want protected, you open and lock.
That is the lock has to come before the process begins
making any sort of decisions. And generally that means
that you don't want to lock the file(s) you are
going to work with.