0

我使用 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::ofstream

4

1 回答 1

0

可能您没有刷新输出。

这可以通过

flush myChan

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

chan configure myChan -buffering line

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

于 2013-07-24T07:04:32.607 回答