#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 チャネルを閉じてファイルにリダイレクトしようとしました。(説明のようにGet the output from Tcl C Procedures )。実行後、「imfile」が作成されますが空です。何が間違っていますか?
How can I redirect stdout into a file in 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);