in reply to file state mannagment

Not easy, really if you want to do this the two processes (yours and the logging program) should be co-operating.

You will need to understand how the logging program uses the output file, particularly if it is opened and closed, or kept open at all times (as asked above). You should be able to get that information from your supplier, or by running either strace, truss, or tusc, depending on your version of UNIX. These programs are very similar and trace the kernel calls made by a program. Try and determine the file descriptor being used (returned integer from open), then you might be able to determine from /proc/process-id/fd when the file gets closed. Unfortunaltely the format of /proc varies between versions of UNIX.

If your logging process does not close the file then you are stuck - you have no idea if a single write is the only one in a sequence, and there may be other messages in buffers.