c++ - TCL C API 创建并注册新 channel

标签 c++ c tcl ofstream channels

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

相关文章:

c - Lex:标识符与整数

c++ - 如何在同一个程序中同时使用 C++/TCL 和 C++/TK?

C++模板检查类型验证

c++ - 为什么即使我没有为其分配内存,它仍然可以工作?

c - 如何在多线程中使用 printf()

c - 如何判断eth0模式是static还是dhcp?

file - 如何使用 tcl 逐行读取大文件?

c - 创建TCL C channel 时使用Tcl_SetChannelOption函数

c++ - Qt 从 SoapRequest 获取响应

c++ - 如何从图像中提取 ROI 区域并将其显示在窗口中