Trivial 2-party locking mechanism:
Why not have the child delete the file when it is finished with it?
The parent can then wait for the file to disappear before creating the next version of it.
Another option would be to use Linux::Inotify2 if the operating system is Linux. The trigger would be on IN_CLOSE_WRITE "writable fd to file / to object was closed". :)