TCL C API Создание и регистрация нового канала

Я использую 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 ответ

Возможно, вы не сбросили вывод.

Это может быть сделано с

flush myChan

Вы также можете настроить свой канал на сброс в конце строки или всякий раз, когда что-либо записывается в него:

chan configure myChan -buffering line

(или же none). Стандартный вывод по умолчанию настроен с -buffering line

Другие вопросы по тегам