Доступ к консольному приложению ввода-вывода - PullRequest
0 голосов
/ 04 апреля 2011

У меня есть консольное приложение linux - программа научного моделирования, которую я использую.Он открывает оболочку TCL, в которую вы затем вводите команды.Обычно я предварительно записываю все свои тестовые векторы и смотрю на результат, вручную вводя данные, но теперь я бы хотел перейти к более сложному: включению внешней обратной связи.

Моя идея заключается в том,У меня будет запущено внешнее моделирование, которое будет использовать выходные данные симулятора, а затем генерировать новые тестовые векторы на лету для обратной связи с симуляцией.Я немного смутно смотрю на детали того, как это реализовать.Я немного знаком с C и с Python.

Полагаю, углубляясь в специфику - как мне подключиться к терминалу ввода-вывода программы?Я бы предпочел использовать Python, если это возможно.Есть ли какие-либо ссылки, которые я могу прочитать, чтобы освоить эту тему?

1 Ответ

1 голос
/ 04 апреля 2011

Ваша идея вполне разумна. Python очень хорошо это поддерживает: запуск подпроцесса и межпроцессное взаимодействие. Может быть полезна документация, подобная следующей:

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

Короче говоря, вы собираетесь "читать из" дочернего процесса stdout (и, возможно, stderr) и "записывать в" дочерний процесс stdin. У вас может быть интерактивная консоль, как вы описываете, или чтение / запись в текстовые файлы, и даже «связывание» процессов для общения (например, передача по трубопроводу «mycommand | mycommand2»).

Для Python есть много убедительных примеров (например, система сборки "scons", написанная на Python, которая делает это много). Более того, класс Qt QProcess делает это довольно легко, и есть несколько действительно хороших обёрток Python, таких как " PySide ", " PyQt " и " PythonQt"(возможно, другие).

...