У меня есть исполняемый файл (fossil scm), который вызывается моей программой извне через вызов Windows ::CreateProcess. Затем перехватываются stdout и stderr. Поскольку исходный код для ископаемого доступен, я бы предпочел создать из него статическую библиотеку и выполнять вызовы напрямую. В настоящее время связь с ископаемым осуществляется через параметры командной строки, а обратная связь — через код возврата процесса, stdout и stderr. Fossil пишет в stdout/err через вызовы printf и fprintf.
Каков наилучший способ решить эту проблему с минимальным изменением ископаемого источника? Есть ли надежный и кросс-платформенный способ перехвата stdout/err и отправки его в буфер памяти?