从C++应用程序启动、停止并向单独的Python脚本发送参数的最佳方法是什么?
我来解释一下情况:
我有一个用C++和QT写的QT应用程序。
这个QT应用程序会启动一个独立的控制台C++应用程序,这个应用程序在后台运行。
这两个程序之间可能会用套接字(sockets)进行通信,但我还不太确定。
控制台C++应用程序需要启动和停止我的gnuradio Python脚本,并且还需要向它发送一些参数。
一旦启动,这个gnuradio脚本会独立运行,进入一个无限循环,可能会通过套接字向控制台或QT应用程序发送信息。
我的控制台应用程序需要在QT应用程序发出停止命令时,停止这个gnuradio脚本的运行。
我的问题是,如何从我的C++控制台应用程序中停止这个独立的Python脚本?还有没有什么办法可以让这个过程更简单?
2 个回答
对于你的C++程序,你可以看看这里:
http://www.codeproject.com/KB/cpp/kill_process.aspx
这个链接提供了创建和结束外部进程的基本代码。记住,启动一个Python脚本就是调用Python程序,并把脚本作为第一个参数传进去。
你的C++应用和Python脚本之间可以通过命名管道进行通信。
http://en.wikipedia.org/wiki/Named_pipe
当然,DBUS也可以用。
我的建议是:
1) 从你的QT应用启动C++应用,利用QT的特性。你可以通过标准输入输出重定向让这两个程序进行通信(具体取决于你想要实现的功能)。
2) 从C++中启动你的Python脚本,按照上面的例子来做。这两个程序可以通过DBUS、Socket或管道进行通信。
这样应该就能解决问题了。
使用fork()和execv()来启动一个新的Python脚本。execv()(或者其他类似的exec函数)可以让你给Python脚本传递参数。当你完成Python脚本的运行后,可以用子进程的ID来发送一个结束信号。