It's hard to say what your options are, not knowing how the writing process opens the file. Obviously, it does not open the file for exclusive access and keeps it open. Otherwise, you cannot read it at all.
The behavior you describe indicates that the writing process opens the file for exclusive access, writes to it, and then closes the file. If this happens, you will not be able to open your program and save it. This can cause the write process to crash whenever it tries to write.
If you cannot change the recording process, your options are limited and not very attractive. Most likely, you will have to force your program to open the file, read a small piece, close the file and wait a bit before reading it again. Even then, there is no guarantee that you will not open the file when the recording process tries to write. Which, I think, you have already discovered.
Did you know that the write process loses data when it cannot open the file, or if it just buffers the data and writes it the next time it really can open the file? If so, then my suggestion of going through the file a bit might work. Otherwise, you will lose data.
There is no open mode, which I know about, it is the equivalent of "Open the file for reading, but if someone wants to get exclusive access, then you must have it."
Another possibility would be for your program to rename the file whenever you want to read it, and then delete the renamed file after reading it. This assumes, of course, that the recording process will create a new file if necessary. Even then, a problem may arise if the recording process tries to write during renaming. I donβt think this will be a problem (renaming may be atomic with respect to the file system), but this is what you would need to investigate.