2015-12-13 43 views
4

我将一些Qt Windows/VC++代码移植到Linux/GCC。应用程序可以将它自己的快捷方式添加到Windows自动启动文件夹,以便应用程序在登录后启动。Qt C++应用程序:在Linux中自我启动安装

我想在Linux中做同样的事情。我使用Kubuntu 15.10,但该解决方案应该适用于几乎所有(或至少大部分)Linux变种。它应该没有超级用户权限(或者它应该自动请求权限)。

我在网上搜索,发现两种解决方案:

  1. 添加桌面项文件$HOME/.config/autostart
  2. 添加的符号链接/etc/init.d/

请问他们在所有的Linux发行版都工作?有什么区别?哪一个是首选?

另外我想知道如果我应该通过编程方式运行shell命令或者是否有一些本机API可以在C/C++中使用(包括简单的错误检测)。

+1

您是否知道您提及的这两件事情有何不同? –

+0

“该解决方案应该适用于几乎所有(或至少大部分)Linux变种” - 这几乎是不可能的。 –

+0

@Ulrich。不完全是。我假设基于家庭的解决方案是用户特定的,而另一个是系统范围的,这是正确的吗?也许在必要的用户权限和/或应用程序启动时也有差异? – Silicomancer

回答

1

您可以用各种方式添加应用程序。

  1. 通过linux初始化系统。对于最新的linux操作系统systemd是一个标准。 In this case your need to create systemd unit for your application
  2. 通过桌面管理器,如gnome,kde和其他可能的。 In this case you need also create specification for autostarting your app
  3. Via bash files

我认为,通过systemd单元首选方式,因为现在这是在开机时间和for special user起动过程的标准方式,如果需要。

+0

如果我理解正确,我会通过执行这些解决方案中的每一个的shell命令来创建一些新的链接或文件。所以没有像C++ API那样的事情? – Silicomancer

+0

@Silicomancer我不知道现有的这一点。 – Milovidov

+0

GUI应用程序需要用户交互来做任何有用的事情。这就是我计划在登录后启动它的原因。使用systemd登录(启动时)之前,可能会在启动时产生任何问题? – Silicomancer

0

我已经把项目放在GitHub中用于管理不同操作系统中的自动启动功能。它是用Qt编写的。 请检查并让我知道如果您有任何问题,请使用它: https://github.com/b00f/qautostart