dsimcha wrote:
== Quote from Sean Kelly ([email protected])'s article
dsimcha wrote:
Is there an easy way to write a function, or a function already written for
me, that will allow for a file shared between processes to be appended to
safely? This should be done in a way that will make it impossible for two
processes to write to it at the same time, using locking, and should be
platform-independent.
Performance does not matter because, in the use case I have, we're only
talking about one update every few minutes. Simplicity, however, does matter.
All I'm trying to do is run a simulation thousands of times on a bunch of
different computers sharing an NFS file system and have all of the results end
up in one nice plain text file instead of having each instance write to its
own file and having to keep track of them and piece them together by hand.
Use a second file to represent the lock, with the contents as the lock
owner. While the file exists, poll. When it's not there, create it and
write the process id into it, then unlink the file when you're done.
Wouldn't you have to somehow atomically poll and create the file? What if some
other process created the lock file between your call of exists() and write()?
If you use the "create only" flag when opening the file then it should
fail if the file was already created by someone else. Unless NFS
doesn't provide a sufficiently reliable synchronization mechanism for
this to work, that is (I really don't know).