Я использую Tcl 8,6 (окна) и я не могу зарегистрировать и использовать новые каналыTCL C API Создать и зарегистрировать новый канал
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;
функции просто, они имеют только зЬй :: COUT
я запустить интерпретатор с помощью сценария
"chan puts myChan whatever"
и ничего не случилось, никаких ошибок от интерпретатора, нет вывода (консоль, файл). Я не знаю, как укусить это, это первая цель, создать новую шанель и использовать ее, второй - заменить TCL_STDOUT моим собственным каналом (это может быть std :: ofstream), , чтобы при запуске интерпретатора с
"puts WhatEver"
что строка перейти к станд :: ofstream
когда я «чан флеш myChann» я получаю пейзажный цикл, который запустить outputProc из Tcl_ChannelType *, когда я возвращать 0. и ничего не случилось, когда я вернуть INT toWrite – Jan3Sobieski
прогресс, моя функция была скопирована, но файл по-прежнему пуст. Как я могу получить этот std :: ostream? – Jan3Sobieski
@user Вам необходимо правильно реализовать outputProc, возвращая количество фактически записанных байтов. Если вы всегда возвращаете 0, код флеша просто попробует еще раз. :-) –