static int
MyReplacementExit(ClientData unused, Tcl_Interp *interp, int argc, const char *argv[])
{
// Tcl_DeleteInterp(interp);
// Tcl_Finalize();
return TCL_OK;
}
int main() {
Tcl_Interp *interp = Tcl_CreateInterp();
Tcl_CreateCommand(interp, "exit", MyReplacementExit, NULL, NULL);
Tcl_Eval(interp, "exit ; puts 11111111");
std::cout << "22222222222" << std::endl;
return 0;
}
我需要处理exit
tcl 解释器的命令评估。默认情况下,它会尝试删除自身并调用std::exit
关闭整个程序。这不是我想要的,所以我试图用自定义 proc 替换它。我不需要在退出处理程序 proc 中删除解释器(我可以稍后再做),只需要它在命令之后不继续评估命令exit
。
在这段代码中,我需要以MyReplacementExit
某种方式更改 proc,因此11111111
不会打印但
22222222222
会打印。
它可以通过TCL_ERROR
从MyReplacementExit
proc返回来实现,但是我无法区分其他错误情况。