Я использую 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
Возможно, вы не сбросили вывод.
Это может быть сделано с
flush myChan
Вы также можете настроить свой канал на сброс в конце строки или всякий раз, когда что-либо записывается в него:
chan configure myChan -buffering line
(или же none
). Стандартный вывод по умолчанию настроен с -buffering line
Других решений пока нет …