After doing some research and I've found the following in this link:
POSIX standard requires that C stdio
FILE* operations are atomic.
POSIX-conforming C libraries (e.g, on
Solaris and GNU/Linux) have an
internal mutex to serialize operations
on FILE*s.
It looks like that calls should be atomic, but it depends on your platform. In same link, there is also another paragraph that lets you think that the programmer should take care:
So, for 3.0, the question of "is
multithreading safe for I/O" must be
answered with, "is your platform's C
library threadsafe for I/O?" Some are
by default, some are not; many offer
multiple implementations of the C
library with varying tradeoffs of
threadsafety and efficiency. You, the
programmer, are always required to
take care with multiple threads.
Also, as you have two different FILE*
in two different processes, I think you have no choice.