首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为Linux守护进程在启动时运行Qt应用程序

作为Linux守护进程在启动时运行Qt应用程序
EN

Stack Overflow用户
提问于 2009-07-05 14:17:24
回答 5查看 9.7K关注 0票数 7

我已经开发了一个Qt应用程序,它包含一个TCP服务器等等。我现在正在尝试制作Ubuntu包,让应用程序在启动时自动启动。

即使没有人登录,应用程序也需要运行,这意味着守护进程是通过/etc/init.d/中的脚本启动的

我尝试在启动时运行应用程序,并在init.d脚本中发送终止信号,但这意味着应用程序在前台运行并阻塞init-script。

Forking like in an other question似乎几乎正常工作,我得到‘未知错误’后,试图启动一个TCP服务器。不过,应该有一种简单的方法来编写init脚本,以便在各种Linux发行版上启动时在后台运行我的应用程序。

有谁能给我指个方向吗?

在Qt 4.5中使用Ubuntu 9.10

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-05 14:26:46

你的程序是GUI应用程序还是没有GUI就能工作?

为什么不在init脚本中使用&对其进行后台处理?

票数 1
EN

Stack Overflow用户

发布于 2009-08-18 00:32:38

最好的方法可能是使用QtService,它会为您处理forking的工作。

但是,如果您希望继续构建自己的应用程序,则应该在后台运行应用程序,或者通过OpenRC附带的start-stop-daemon或适用于您的发行版的类似实用程序运行它。

此外,请确保您只链接到QtCore共享库。尽管应用程序可能是命令行的,并且永远不会启动GUI,但这并不意味着应用程序运行时不需要X。例如,一组单元测试:

代码语言:javascript
复制
$ ldd runTests  | grep Qt
libQtTest.so.4 => /usr/lib/qt4/libQtTest.so.4 (0x00007fd424de9000)
libQtXml.so.4 => /usr/lib/qt4/libQtXml.so.4 (0x00007fd424baa000)
libQtGui.so.4 => /usr/lib/qt4/libQtGui.so.4 (0x00007fd4240db000)
libQtCore.so.4 => /usr/lib/qt4/libQtCore.so.4 (0x00007fd422644000)

因为存在QtGui,所以也引入了所有的X库,尽管从上面的输出中过滤了X库。

票数 2
EN

Stack Overflow用户

发布于 2009-07-05 14:49:39

根据默认运行级别,您需要将符号链接添加到/etc下的任何rc?.d目录中。或者使用update-rc.d脚本:首先,需要在/etc/init.d中创建执行应用程序的脚本;其次,使用update-rc.d脚本添加启动所需的文件。

您可以通过阅读update-rc.d手册页找到有关如何执行此操作的信息:

代码语言:javascript
复制
$man update-rc.d
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1084140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档