Paddy wrote: > I've never done this in anger so feel free to mock (a little :-). > > I'd have a fixed field at the beginning of the field that can hold the > hostname process number, and access time of a writing process, togeher > with a sentinal value that means "no process has access to the file". > > A program would: > 1. wait a random time. > 2. open for update the file > 3. read the locking data > 4. If it is already being used by another process then goto 1. > 5. write the process's locking data and time into the lock field. > 6 Modify the files other fields. > 7 write the sentinal value to the locking field. > 8. Close and flush the file to disk.
That doesn't really work; you have still have a race condition. Locking the file is the good solution, but operating systems vary in how it works. Other reasonable solutions are to re-name the file, work with the renamed version, then change it back after closing; and to use "lock files", which Wikipedia explains near the bottom of the "File locking" article. -- --Bryan -- http://mail.python.org/mailman/listinfo/python-list