Tcl_Main()完成后我可以恢复我的程序吗?

时间:2015-10-22 18:02:30

标签: tcl

我通过调用Tcl_main()启动交互式tcl解释器并在那里获取一些tcl命令。之后,我想退出tcl解释器并恢复我的程序。但是,当我输入"退出"时,它将退出整个程序。有没有办法退出tcl解释器并继续我的程序?感谢。

1 个答案:

答案 0 :(得分:2)

Tcl_Main()函数无法提供任何代码在完成后恢复的方法;它是处理简单程序的便利包装器,因此您不必担心这些事情,但是这种包装器在很多方面受到限制,其中之一就是您不能做你想要做的事情。 (在函数结束时,它调用Tcl_Exit()。)

但您不需要使用Tcl_Main()!它只使用Tcl的公共API(有一些例外情况可能对您无关紧要)。您可以通过调用(大约)来复制所有内容:

Tcl_FindExecutable(argv[0]); // ONCE PER PROCESS; INITIALISES TCL C LIBRARY

Tcl_Interp *interp = Tcl_CreateInterp();
// ... now in your loop evaluate code, perhaps from the user ...
Tcl_Eval(interp, "some code here");
// ... 
Tcl_DeleteInterp(interp);

// Carry on as normal

那里没有什么神奇的魔力。只需初始化库,创建一个解释器,在那里评估你的代码(也许在从用户那里得到它;如果你想要发明你自己的读者循环或在Tcl中编写它),然后在你完成后删除解释器。