Tcl C API: Leitet die Standardausgabe des eingebetteten Tcl Interp in eine Datei um, ohne das gesamte Programm zu beeinflussen

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

In diesem Code habe ich versucht, stdout channel zu schließen und in die Datei umzuleiten. (Wie beschriebenHolen Sie sich die Ausgabe von Tcl C-Prozeduren). Nach dem Ausführen wird "imfile" erstellt, aber leer. Was mache ich falsch

ich habe gesehenWie kann ich stdout in eine Datei in tcl umleiten? auch, aber ich muss es mit Tcl C API tun.

Ich habe es auch so versucht, aber wieder kein Ergebnis.

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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage