TCL C API创建并注册新频道

TCL C API Create and Register new Channel

本文关键字:频道 新频道 注册 API 创建 TCL      更新时间:2023-10-16

我使用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"

什么也没发生,解释器没有错误,没有输出(控制台,文件)。我不知道怎么咬这个,这是第一个目标,创建新的chanel并使用它,第二个是用我自己的通道替换TCL_STDOUT(可以是std::ofstream),这样当我用运行解释器时

"puts WhatEver"

该字符串转到流的std::

可能您没有刷新输出。

这可以通过完成

flush myChan

您还可以配置您的通道在行尾或任何写入内容时刷新:

chan configure myChan -buffering line

(或none)。stdout默认情况下使用-buffering line 进行配置