从C++应用程序启动、停止并向单独的Python脚本发送参数的最佳方法是什么?

2 投票
2 回答
947 浏览
提问于 2025-04-15 17:53

我来解释一下情况:

  • 我有一个用C++和QT写的QT应用程序。

  • 这个QT应用程序会启动一个独立的控制台C++应用程序,这个应用程序在后台运行。

  • 这两个程序之间可能会用套接字(sockets)进行通信,但我还不太确定。

  • 控制台C++应用程序需要启动和停止我的gnuradio Python脚本,并且还需要向它发送一些参数。

  • 一旦启动,这个gnuradio脚本会独立运行,进入一个无限循环,可能会通过套接字向控制台或QT应用程序发送信息。

  • 我的控制台应用程序需要在QT应用程序发出停止命令时,停止这个gnuradio脚本的运行。

我的问题是,如何从我的C++控制台应用程序中停止这个独立的Python脚本?还有没有什么办法可以让这个过程更简单?

2 个回答

0

对于你的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或管道进行通信。

这样应该就能解决问题了。

2

使用fork()和execv()来启动一个新的Python脚本。execv()(或者其他类似的exec函数)可以让你给Python脚本传递参数。当你完成Python脚本的运行后,可以用子进程的ID来发送一个结束信号。

撰写回答