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

0

Решение

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

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

flush myChan

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

chan configure myChan -buffering line

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]