in reply to Writing to one file from multiple processes

I want to use only one file to write all the logging info, but I'm afraid of a situation where 2 parts will try write simultaneously to the same file.

Is this an error log, used for debugging purposes? Or something that will contain important data you'll need to process later?

If it's the former I'd say don't worry. Writes to a file in append mode will be effectively atomic if they're under 4k (the typical write buffer size). If you write more than that you'll get blocks interspersed between writers if they write at exactly the same time. (This advice does not apply to NFS, according to the open(2) man-page on Linux, btw.)

Thus you'll only see problems if your writers are very active and are writing very large messages to the logs. If that's the case you're going to hate your SQLite implementation since it's well known to not deal well with high levels of concurrency.

-sam

  • Comment on Re: Writing to one file from multiple processes