我有一个linux控制台应用程序 - 我使用的科学模拟程序。它打开一个TCL shell,然后发出命令。通常我所做的是预先编写所有测试向量并通过手动输入数据来查看输出,但现在我想继续进行更复杂的操作:结合外部反馈。
我的想法是,我将进行外部模拟运行,该模拟器获取模拟器的输出,然后动态生成新的测试向量以反馈到模拟中。关于如何实现这一点的细节,我有点朦胧。我熟悉C和Python。
我想,进入细节 - 如何挂钩程序的终端I / O?如果可能的话,我更愿意使用Python。有什么参考资料我可以阅读以加快速度吗?
答案 0 :(得分:1)
你的想法很合理。 Python非常支持这一点:子流程启动和进程间通信。以下文档可能会有所帮助:
http://docs.python.org/library/subprocess.html
简而言之,您将“读取”子进程stdout(可能是stderr),并“写入”子进程stdin。您可以像您描述的那样使用交互式控制台,或者读/写文本文件,甚至可以“连接”进程来交谈(比如管道“mycommand | mycommand2”)。
对于Python,有许多强大的例子(比如用Python编写的“scons”构建系统可以做很多事情)。此外,Qt的QProcess
类使这很容易,并且有一些非常好的Python包装器可用,如“PySide”,“PyQt”和“PythonQt” (可能是其他人)。