Tcl C API: redirigir la salida estándar de la interfaz Tcl incrustada a un archivo sin afectar a todo el programa

#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");
}

En este código he intentado cerrar el canal stdout y redirigirlo al archivo. (Tal como se describeObtener la salida de los procedimientos de Tcl C). Después de ejecutarse, se crea "imfile" pero está vacío. ¿Qué estoy haciendo mal?

he visto¿Cómo puedo redireccionar stdout en un archivo en tcl también, pero necesito hacerlo usando Tcl C API.

También he intentado de esta manera, pero de nuevo ningún resultado.

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

Respuestas a la pregunta(3)

Su respuesta a la pregunta