Лучший способ запустить, остановить и отправить параметры для отделения скрипта Python от приложения C++?

Я пытаюсь объяснить ситуацию:

  • У меня есть приложение QT, написанное на C++ и QT.

  • Это приложение QT запускает отдельное консольное приложение C++, работающее в фоновом режиме.

  • Эти двое общаются, возможно, используя сокеты, пока не знаю.

  • Консольное приложение C++ должно запускать и останавливать мой скрипт gnuradio python. Также ему необходимо отправить параметры.

  • После запуска этот скрипт gnuradio работает независимо в бесконечном цикле, отправляя информацию либо на консоль, либо в приложение QT, возможно, используя сокеты.

  • Мое консольное приложение должно остановить запуск этого скрипта gnuradio, когда приложение QT отдает приказ.

Вопрос в том, как я могу остановить этот отдельный скрипт Python из моего консольного приложения C++? Также есть ли что-нибудь, что я мог бы сделать, чтобы сделать это более простым?

С уважением,

Шпиц


person Spitz    schedule 11.01.2010    source источник


Ответы (3)


сокеты, или вы можете использовать DBUS python и DBUS c++, если вы хотите полностью использовать свободный рабочий стол :D

person James    schedule 11.01.2010

Создайте скрипт Python как новый процесс, используя fork() и execv(). execv() (или любая другая функция из семейства exec) позволяет передавать аргументы сценарию Python. Используйте идентификатор дочернего процесса для отправки сигнала уничтожения, когда вы закончите работу со сценарием Python.

person Vijay Mathew    schedule 11.01.2010

Для вашей программы на С++ вы можете посмотреть здесь:

http://www.codeproject.com/KB/cpp/kill_process.aspx

Это дает вам базовый код для создания и уничтожения внешнего процесса. Помните, что запуск скрипта Python означает вызов корзины Python и указание скрипта в качестве первого аргумента.

Связь между вашим приложением C++ и скриптом Python может осуществляться через именованный канал.

http://en.wikipedia.org/wiki/Named_pipe

но DBUS тоже может работать.

Мой совет :

1) запустите свое приложение C++ из своего приложения QT, используя доброту QT. Вы можете заставить эти два общаться через стандартное перенаправление ввода-вывода (в зависимости от того, что вы действительно хотите делать)

2) запустите свой скрипт python с вашего C++, следуя приведенному выше примеру. И эти двое общаются через DBUS/Socket/Pipes.

Должен сделать трюк

person almathie    schedule 11.01.2010