在后台运行的 Qt 应用程序中监听 linux 命令?

Posted

技术标签:

【中文标题】在后台运行的 Qt 应用程序中监听 linux 命令?【英文标题】:Listen for linux command in a Qt app running in background? 【发布时间】:2021-08-16 10:21:12 【问题描述】:

我想知道是否有一种方法可以将数据从操作系统命令(首先是 Linux,但我也对 Windows 感兴趣)发送到在后台运行的 Qt 应用程序。 我的用例是右键单击文件资源管理器中的上下文菜单,然后将所选文件的路径发送到已经运行的 Qt 应用程序以触发该应用程序内的操作。

任何人都可以提供一些解释或链接到实现这一目标的示例吗? 我已经阅读了有关在 Nemo/Nautilus 中添加右键单击以及一些自定义配置文件的信息,我对 Qt 部分更感兴趣。

【问题讨论】:

Qt没有监听窗口事件的任务,Qt只在Qt窗口有焦点时监听事件。例如,Qt 无法监听文件资源管理器上下文菜单中的右键单击 事件。为此,您必须使用它提供的库(或更好的桌面管理器) 【参考方案1】:

AFAIK,QT 没有这样的组件。 (不知道最近有没有添加,好久没用qt了)

但是您可以做的是在 qt 应用程序中编写一些代码,例如服务器(可能是套接字服务器或管道),当一些数据出现时,您可以根据该数据值采取行动。

另一方面,编写一些将被调用的小实用程序,它将数据发送到您的服务器,通过上下文菜单单击时带有所选文件的路径。

【讨论】:

感谢解答,我去搜索一下sockets的使用情况。 QLocalSocket 可以解决问题,但是会有 2 个应用程序,主要运行一个,另一个将通过右键单击启动以将选定的路径转发到主要应用程序。如果我成功了,我会更新这篇文章,它可能会帮助其他人。 @cleve21 doc.qt.io/qt-5/examples-network.html

以上是关于在后台运行的 Qt 应用程序中监听 linux 命令?的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统管理-进程管理

linux kafka怎么后台运行

Qt 循环中加入QCoreApplication::processEvents退出后台运行

如何在 Android 上后台运行 Qt 应用程序?

Linux用户管理-服务服务管理

Linux 中 Qt 动态库的问题