2011-04-03 216 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」(可能還有其他)。

相關問題