当用户注销时如何停止守护进程?

当用户注销时如何停止守护进程?

/etc/profile.d/我用 C++ 编写了一个守护进程,该守护进程在登录时使用在运行 makefile 部分时放置的 bash 脚本自动启动install。问题是,当我注销并重新登录时,现在有两个守护进程实例正在运行。

我希望第一个在我注销时停止,而不是继续运行。无论如何,它只能在有人登录时运行。如何确保我的守护进程在我注销后不再运行?

答案1

如果您在应用程序中使用 D-Bus,则可以在 org.gnome.SessionManager 接口上监听 SessionOver 信号。使用 C++ Qt5,您的代码将如下所示:

QDBusConnection dbus = QDBusConnection::sessionBus();
dbus.connect("org.gnome.SessionManager", "",
    "org.gnome.SessionManager", "SessionOver",
    this, SLOT(handle_sessionOver());

参考:

答案2

您可以使用在注销时执行的 bash 脚本来停止守护进程

添加以下行lightdm配置文件

session-cleanup-script=<path-to-logout-bash-script>

lightdm.conf 可以在以下位置找到:

  • /etc/init/lightdm.conf

    或者

  • /etc/lightdm/lightdm.conf

这可能会起作用

相关内容