Encapsulating Locked File Appends

dsimcha dsimcha at yahoo.com
Tue Mar 10 08:48:47 PDT 2009


== Quote from Sean Kelly (sean at invisibleduck.org)'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()?



More information about the Digitalmars-d mailing list