Мне не на 100% ясно, чего вы пытаетесь достичь, если честно.
Но, насколько я понимаю, вы можете взглянуть на Boost.Process
Вы можете делать такие вещи, как
bp::child cs = p.start();
bp::postream& os = cs.get_stdin();
А затем используйте os в качестве любого потока для вывода содержимого в стандартный ввод вашего дочернего процесса.
В любом случае, с библиотекой w.r.t можно достичь очень многого. перенаправление и сцепление труб.