繁体   English   中英

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

[英]How to start and stop an external program in another device using Qt?

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

我希望一个程序(客户端)在建立它们之间的连接并开始发送数据之前先启动另一个程序(服务器)。 在相同的环境中做到这一点很容易:只需调用QProcessstartDetached() ,但我想远程进行:我想在台式机中启动客户端,并通过已知IP通过ETH / TCP连接设备地址,请单击一个按钮,要求设备启动服务器。 服务器完成启动并开始等待连接后,Desktop应用程序将打开套接字连接并开始发送数据。 发送完所有数据后,应发送另一个命令以要求服务器关闭,关闭连接并完成文件传输操作。

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

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

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

当心允许机器执行来自外部源的任意命令可能引起的任何安全问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM