Tcl C API: перенаправить стандартный вывод встроенного взаимодействия Tcl в файл, не затрагивая всю программу

#include <tcl.h>
int main(int argc, char** argv)
{
    Tcl_Interp *interp = Tcl_CreateInterp();

    Tcl_Channel stdoutChannel = Tcl_GetChannel(interp, "stdout", NULL);
    Tcl_UnregisterChannel(interp, stdoutChannel);

    Tcl_Channel myChannel = Tcl_OpenFileChannel(interp, "/home/aminasya/nlb_rundir/imfile", "w", 0744);

    Tcl_RegisterChannel(interp, myChannel);
    Tcl_Eval(interp, "puts hello");
}

В этом коде я попытался закрыть канал stdout и перенаправить его в файл. (Как описаноПолучите выходные данные из процедур Tcl C). После запуска «imfile» создается, но пустой. Что я делаю не так?

Я виделКак я могу перенаправить стандартный вывод в файл в Tcl тоже, но мне нужно сделать это с помощью Tcl C API.

Я тоже пробовал этот способ, но опять-таки нет результата.

FILE *myfile = fopen("myfile", "W+");
Tcl_Interp *interp = Tcl_CreateInterp(); 
Tcl_Channel myChannel = Tcl_MakeFileChannel(myfile, TCL_WRITABLE);
Tcl_SetStdChannel(myChannel, TCL_STDOUT);

Ответы на вопрос(3)

Ваш ответ на вопрос