2010-01-11 19 views
3

我試圖解釋的情況:啓動,停止併發送參數以從C++應用程序中分離Python腳本的最佳方法?

  • 我用C編寫的Qt應用程序++和QT。

  • 此QT應用程序啓動在後臺運行的單獨控制檯C++應用程序。

  • 這兩個通信使用也許套接字,還不知道。

  • 控制檯C++應用程序需要啓動和停止的gnuradio我的Python腳本。還需要發送參數給它。

  • 一旦啓動,該腳本的gnuradio運行independedly在無限循環發送信息到控制檯或使用套接字也許是Qt應用程序。

  • 我的控制檯應用程序需要從當訂單由Qt應用程序給定的連續停止這種gnuradio中的腳本。

問題是如何從我的C++控制檯應用程序停止這個單獨的python腳本?還有什麼我可以做的,使這更簡單?

問候,

斯皮茨

回答

2

菌種python腳本作爲使用一個新的進程()和execv()。 execv()(或exec系列的任何其他函數)可讓您將參數傳遞給Python腳本。當您完成Python腳本時,使用子進程ID發送kill信號。

0

爲了您的C++程序,你可能想看看這裏:

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

它爲您提供了基本的代碼創建和殺死一個外部進程。請記住,啓動一個python腳本意味着調用python bin並將腳本作爲第一個參數。

你的C++應用程序和Python腳本之間的通信可以通過命名管道

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

製成,但DBUS可以工作了。

我的建議是:使用Qt的良善從QT應用

1)啓動你的C++應用程序。你可以有通過標準I/O重定向這兩個通信(視或者你真正做萬安縣)

2)從你的C++以下上面的例子開始你的Python腳本。而這兩者通過DBUS/Socket/Pipes進行通信。

應該做的伎倆

相關問題