我使用Tcl 8.6(windows),无法注册和使用新 channel
std::ofstream file("1.txt");
Tcl_Channel kanal = Tcl_CreateChannel(Type, "myChann", file, TCL_WRITABLE);
Tcl_RegisterChannel(interp, kanal);
file.close();
类型是
Tcl_ChannelType* Type = new Tcl_ChannelType();
Type->closeProc = closeProc;
Type->inputProc = inputProc;
Type->outputProc = outputProc;
Type->typeName = "My own chann";
Type->version = TCL_CHANNEL_VERSION_2;
函数很简单,它们只有 std::cout
我用脚本运行解释器
"chan puts myChan whatever"
什么也没发生,解释器没有错误,没有输出(控制台,文件)。 我不知道怎么咬这个 这是第一个目标,创建新的 channel 并使用它, 第二个是用我自己的 channel 替换TCL_STDOUT(可以是std::ofstream), 这样当我运行解释器时
"puts WhatEver"
该字符串转到 std::ofstream
最佳答案
可能您没有刷新输出。
这可以通过
来完成flush myChan
您还可以将 channel 配置为在行尾或写入任何内容时刷新:
chan configure myChan -buffering line
(或无
)。 stdout 默认配置为 -buffering line
关于c++ - TCL C API 创建并注册新 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17827184/