There's no easy way to control what gets written when you share output to your /dev/tty between multiple (essentially independent) processes.
One alternative is to make the processes work in lockstep (instead of in parallel). Not a good solution
Another is to create some kind of semaphore (either a bona fide "ipc semaphore", or some global alternative) to regulate who does a "printf()" and who waits. Again - not a good solution.
Another choice is to redirect stdout to a disk file (e.g. "my_child_prog > $$.txt"), and then have the "master" process read the individual files at its leisure.
'Hope that helps .. PSM