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解釋器禁用它。爲什麼Tcl_Interprer以這種方式實現?
這種情況是當我試圖在解釋器中評估exit
命令。我期望它應該只銷毀,刪除或禁用解釋器,但它調用關閉整個程序的std::exit
,該程序保留了非受控對象。
我知道這種情況可能有解決方法,但我很好奇爲什麼Tcl解釋器以這種方式實現。它只會改變它自己而不是整個程序會更有用。
的Tcl被設計爲節目腳本語言膠 - 這是它的原始設計簡介 - 代碼可能想要做的事情之一是'退出'。如果您不希望「退出」表現得那樣,請刪除或替換該命令; Tcl的內置'exit'實際上只是「標準庫」的一部分(與所有其他命令一樣),並不是那麼特別。 – 2013-05-04 12:00:44