加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – qtcreator发送的“停止”信号

发布时间:2020-12-14 01:11:19 所属栏目:Linux 来源:网络整理
导读:我在 linux上工作,当我用Qt creator IDE上的“停止”按钮关闭它时,我意识到我的应用程序正在留下守护进程.我想处理这些情况,因此应用程序关闭的方式与关闭主窗口时的方式相同.要编写处理程序,我需要知道它对应的信号. 解决方法 深入研究QtCreator的代码,我可
我在 linux上工作,当我用Qt creator IDE上的“停止”按钮关闭它时,我意识到我的应用程序正在留下守护进程.我想处理这些情况,因此应用程序关闭的方式与关闭主窗口时的方式相同.要编写处理程序,我需要知道它对应的信号.

解决方法

深入研究QtCreator的代码,我可以看到QtCreator在内部使用QProcess来启动你的应用程序.红色的“停止”按钮连接到ApplicationLauncher :: stop(),它会以两种方式之一终止您的进程,具体取决于它是GUI应用程序还是控制台应用程序,但在这两种情况下,结果最终都是相同的 Linux操作系统.

对于GUI应用程序,ApplicationLauncher调用QProcess :: terminate(),后者又向您的守护程序发送SIGTERM(在Linux上)信号.然后等待(使用waitForFinished())1秒钟,如果守护进程尚未退出,则调用QProcess :: kill(),发送SIGKILL.

对于控制台应用程序,ApplicationLauncher将终止委托给ConsoleProcess实用程序类.在Linux上,ConsoleProcess :: stop()将类似于ApplicationLauncher用于GUI应用程序,它首先发送SIGTERM,然后等待1秒,如果尚未终止则发送SIGKILL.

您可以在此处找到QtCreator的相关代码:

> GUI app termination
> Console app termination (on Linux)
> Console app termination (on Windows)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读