Как? Набрёл на вот такое:
char buf[SIZE];
freopen("/dev/null", "a", stdout);
setbuf(stdout, buf);
ЯННП как это работает. Почему /dev/null на вход stdout? Каким боком это к задаче его перехвата?
И нельзя ли как-то без фиксированного размера буфера? Чую что надо pipe открыть, но как/куда/каким концом его потом?