Что означает «захват» в этом контексте? В конечном счете, будь то Python или C ++, написание проходит через ОС. Если целью является просто отключить вывод, записать его в файл, отправить его другому процессу и т. Д., И т. Д., Вы можете перехватить весь вывод на этом уровне.
Вот пример, который подавляет все stdoutвывод для продолжительности сценария Python, затем восстанавливает, после чего стандартный вывод ведет себя как прежде (для Python и других):
#include <pybind11/embed.h>
#include <unistd.h>
namespace py = pybind11;
int main() {
auto fdo = fileno(stdout);
auto savefd = dup(fdo);
auto f = fopen("/dev/null", "w");
dup2(fileno(f), fdo);
py::scoped_interpreter guard{};
py::eval_file("test.py");
fflush(stdout);
dup2(savefd, fdo);
}