Qt 应用程序在分叉到后台时意外收到 HUP 信号
Posted
技术标签:
【中文标题】Qt 应用程序在分叉到后台时意外收到 HUP 信号【英文标题】:Qt app receives HUP signal unexpectedly when forked to background 【发布时间】:2015-03-02 15:44:06 【问题描述】:我已经构建了一个 Qt 应用程序,它在收到 HUP 信号后会很好地关闭(像这样的设置how to get signals into Qt)。这在 Red Had 6 下效果很好,但是当我在 Ubuntu 14 下运行这个应用程序时,我的应用程序会立即收到 HUP 信号(在后台运行分叉后)然后关闭 - 即使我没有发送 HUP。此外,这只发生在我的应用程序分叉并在后台运行时 - 如果我在前台运行我的应用程序,它不会意外收到 hup。
是否有其他原因可能导致它在守护进程时收到 HUP 信号? (以及为什么在一个发行版下而不是另一个发行版)
【问题讨论】:
【参考方案1】:当守护进程(分叉)时,父进程在退出时发出 HUP 信号。出于某种原因,在 Red Hat 上,这个信号直到很久以后才会触发子进程。在 Ubuntu 上,信号会很快击中孩子(或者 Ubuntu 可能会为孩子保留信号)。
解决方案是确认父进程已经终止,然后挂钩到 HUP 信号。
【讨论】:
以上是关于Qt 应用程序在分叉到后台时意外收到 HUP 信号的主要内容,如果未能解决你的问题,请参考以下文章