in reply to Re: Add a line to the end of a file
in thread Add a line to the end of a file

Solaris 2.6 and later (SunOS 5.6 -> 5.9) can handle files larger than this size as well. If you are using veritas filesystem you may need to make sure you are mounting with the largefiles option.

The only other problem you will want to avoid here is to make sure that you don't have any race conditions if you run the append on multiple threads or processes at the same time. You will want to look into locking in that case, or maybe a service that handles writing to the file and takes the input from a port or queue (think like syslog or sendmail).


-Waswas
  • Comment on Re: Re: Add a line to the end of a file

Replies are listed 'Best First'.
Re: Re: Re: Add a line to the end of a file
by DrHyde (Prior) on Feb 18, 2004 at 10:12 UTC
    If you open a file with O_APPEND (which is what >> does) then each write to the file is preceded with a seek to the current end of the file. The seek and write are atomic, provided that you are writing less than a block of data (might work for more than a block, I disremember). The size of a block varies from one filesystem to another and depends on the platform, the size of the filesystem, the options with which the fs was created, the phase of the moon, and so on. It is *typically* of the order of 1 to 4 K.

    Be aware that this race condition *does* exist in NFS. Which doesn't provide adequate locking to get around it. Yay.