Re: how to write to a file without race condition
From: James (jas_at_spamcop.net)
Date: 07/18/04
- Previous message: googler: "class member function as the start function for pthread_create"
- In reply to: Casper H.S. Dik: "Re: how to write to a file without race condition"
- Next in thread: Dan Mercer: "Re: how to write to a file without race condition"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Sun, 18 Jul 2004 11:44:21 +0100
On 17 Jul 2004 23:08:30 GMT, Casper H.S. Dik <Casper.Dik@Sun.COM>
wrote:
>James <jas@spamcop.net> writes:
>
>>No, each of them will atomically seek to the current EOF, append their
>>data, then the next one will write at the new EOF. They won't
>>overwrite each other unless they're running over NFS (which introduces
>>a race condition) or they used lseek with an explicit offset rather
>>than SEEK_END.
>
>Why do you believe that lseek(..., SEEK_END) has this magic
>property?
That's what Alex Colvin said earlier in the thread. It *doesn't* have
this property (which is hardly "magic", since it amounts to setting
the O_APPEND flag!), but until I checked for myself his explanation
seemed reasonable, particularly in the absence of any challenge until
yours. (James Antill *agreed* with it, then changed his mind
mid-post...)
> lseek sets the file pointer and the only thing "SEEK_END"
>does is to set the file pointer relative to the current end.
Correct. As I said earlier, to achieve the result described you need
to set O_APPEND rather than using lseek().
James.
- Previous message: googler: "class member function as the start function for pthread_create"
- In reply to: Casper H.S. Dik: "Re: how to write to a file without race condition"
- Next in thread: Dan Mercer: "Re: how to write to a file without race condition"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|