Question:
How do I determine if a Unix process has stopped writing to a file,so that my Java program can start reading it?
Answer:
If you are not able to modify the source code for the Unix program,you may well be out of luck. If you can modify the source code, thenyou have a few options.
The most straightforward is to useinterprocess communication to notify the Java program that it is ready tostart reading the file. You can do this using a TCP socket, bycreating a named pipe that the Java program reads for notification, or byjust creating a temporary file to signal the go ahead.
Another alternative is to use mandatory file locking, if available, and make theUnix process lock the file before writing and unlock it after it isdone. This is the best solution because it doesn’t require anymodifications to your Java program. With mandatory locking, the Javaprogram will block if it tries to read the file while it is stilllocked. If mandatory locking is not available to you, you can alsowrite some native code to enable cooperative file locking from yourJava program.