如何使用Qt在另一台设备上启动和停止外部程序?

时间:2015-04-08 13:30:32

标签: linux qt remote-access remote-server qprocess

我正在开发一个固件更新程序,它应该从Web服务器下载数据并将其上传到嵌入式Linux设备。

我希望程序(客户端)在建立它们之间的连接并开始发送数据之前启动另一个程序(服务器)。要在同一环境中轻松完成:只需拨打QProcessstartDetached(),但我想远程执行此操作:我想在桌面计算机中启动客户端,并通过ETH连接设备/ TCP在已知的IP地址中,单击一个按钮,该按钮将要求设备启动服务器。当服务器完成启动并开始等待连接时,桌面应用程序将打开套接字连接并开始发送数据。发送完所有数据后,应发送另一个命令,要求服务器关闭,关闭连接并完成文件传输操作。

我的问题是:如何在应用程序位于不同的计算机(在调用程序位于PC中时在嵌入式Linux设备中)启动或停止时,如何执行此操作 STRONG>?请注意,解决方案必须不依赖于某些额外的软件(例如Tcp服务器)才能在设备上持续运行 - 这正是我想要避免的。

1 个答案:

答案 0 :(得分:1)

这与Qt无关,因为它没有提供任何用于此目的的东西。 从这一点起至少有两条路径:

  • 使用应用程序中的SSH启动远程计算机中的任何进程:ssh user@remote-machine "any command here"。这可以使用QProcess调用; 或
  • 编写另一个软件来监听套接字命令并启动/停止所需的任何进程,然后让它在远程机器中一直运行。然后,只需更改客户端软件即可发送相关命令

请注意允许机器从外部源执行任意命令时可能出现的任何安全问题。