int main() {
Tcl_Interp *interp = Tcl_CreateInterp();
Tcl_Eval(interp, "close stdout");
Tcl_Eval(interp, "puts hello");
std::cout << "other output" << std::endl;
}
我有一个使用Tcl_Interpreter
. 我不想在标准输出中看到它的输出,所以我要关闭它。但它会关闭整个程序的标准输出,"other output"
也不会显示。我的程序可能有很多其他输出。为什么 Tcl 解释器禁用它。
这种情况是当我试图exit
在解释器中评估命令时。我希望它应该只销毁、删除或禁用解释器,但它正在调用std::exit
关闭整个程序,它保留未破坏的对象。
我知道这种情况可能有解决方法,但我很好奇为什么 Tcl Interpreter 以这种方式实现。它只改变自己而不是整个程序会更有用。