TCL C API创建并注册新频道

时间:2013-07-24 06:57:33

标签: c++ c tcl ofstream channels

我使用Tcl 8.6(windows),我无法注册和使用新频道

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"

没有任何事情发生,没有来自解释器的错误,没有输出(控制台,文件)。 我不知道怎么咬这个, 这是第一个目标,创造新的香奈儿并使用它, 第二个是用我自己的频道替换TCL_STDOUT(它可以是std :: ofstream), 这样当我用

运行翻译时
"puts WhatEver"

该字符串转到std :: ofstream

1 个答案:

答案 0 :(得分:0)

可能你没有冲洗输出。

可以使用

完成
flush myChan

您还可以将频道配置为在行尾或在写入任何内容时进行刷新:

chan configure myChan -buffering line

(或none)。 stdout默认配置为-buffering line