2011-04-03 141 views
0

我有一个Linux控制台应用程序 - 我使用的科学模拟程序。它打开一个TCL shell,然后你发出命令。通常我所做的就是预先写好所有的测试向量,然后通过手动输入数据来查看输出结果,但是现在我想转向更复杂的部分:合并外部反馈。访问控制台应用程序IO

我的想法是,我将有一个外部模拟运行,它将模拟器的输出,然后生成新的测试向量,以反馈到仿真。我对如何实现这个细节有点朦胧。我对C和Python非常熟悉。

我想,进入具体细节 - 我该如何挂钩程序的终端I/O?如果可能的话,我宁愿使用Python。是否有任何我可以阅读的参考资料,以加快速度?

+0

不是你的问题的答案。只是模拟问题的提示。注意使用模拟器的输出,如当前模拟的输入。这取决于你在模拟什么以及如何,但是这种做法可能导致错误的模拟结果。 – Heisenbug 2011-04-03 21:02:12

回答

1

你的想法很合理。 Python非常支持:子进程启动和进程间通信。就像下面的文档可能会有所帮助:

http://docs.python.org/library/subprocess.html

总之,你要子进程标准输出(也许标准错误),“读取”和“写入”子流程标准输入。您可以像您描述的那样使用交互式控制台,或者读写文本文件,甚至可以使用“连接在一起”的过程进行对话(如管道“mycommand | mycommand2”)。

对于Python来说,有很多强大的例子(比如用Python编写的“scons”构建系统)。此外,Qt的QProcess类使这非常容易,并且有几个非常好的Python包装可用,如“PySide”,“PyQt”和“PythonQt”(可能还有其他)。