在C和C++中使用Expect库:全面指南
1. 概述
通常,我们会在面向命令的Tcl环境中使用Expect。不过,即使不借助Tcl,也能够运用Expect。接下来,将介绍如何通过Expect库在C语言里调用Expect函数。这个库同样兼容C++,并且大部分示例在C和C++环境下是一致的。要是你想在其他语言里使用,就得自行探索了。但如果你清楚如何在自己喜欢的语言里调用C例程,那在这些语言里使用Expect应该也没问题。
Expect库中的很多函数和Expect程序里的对应函数工作方式类似。所以,在使用这个库之前,要是有一些使用Expect的经验,会非常有帮助。像生成进程、通配符模式与正则表达式这类概念,这里就不详细解释了。
需要说明的是,这里并非鼓励大家使用C或C++。特别是对于类似Expect的编程任务,在Tcl环境下操作会比C或C++容易得多,毕竟C和C++有编辑 - 编译 - 调试这样的常规循环。和典型的编译程序不同,调试Expect程序时,大部分工作不是让编译器接受程序,而是确保对话逻辑正确,而在Tcl里做这件事要快得多。
要是你清楚C、C++和Tcl之间的权衡,并且有充分理由使用这个库,那就大胆去做。但要是你不了解Tcl,只是不想再学一门新语言,我建议你重新审视自己的决定,给Tcl一个机会,它的功能远超你的想象。
对于很多任务来说,Tcl环境比C和C++更合适。不过,要是你已经有大量使用其他机制来控制符号表和程序流程的软件,那可能就不得不使用C和C++了。
2. 调用Expect函数
从C和C++调用Expect很简单。由于大部分示例和解释在两种环境下一样,后面就不再特别提及C++了。E