Como faço para parar um daemon quando o usuário efetua logout?

1

Eu escrevi um daemon em C ++ que é iniciado automaticamente no login usando um script bash colocado em /etc/profile.d/ durante a execução da seção install do meu makefile. O problema é que quando faço logout e faço login novamente, agora existem duas instâncias do daemon em execução.

O que eu gostaria é que o primeiro pare quando eu sair, não continue. Só serve para correr enquanto alguém estiver logado, de qualquer forma. Como posso ter certeza de que meu daemon ainda não está em execução após o logout?

    
por Christopher Kyle Horton 22.04.2014 / 23:33

2 respostas

2

Se você estiver usando o D-Bus em seu aplicativo, poderá ouvir o sinal SessionOver na interface org.gnome.SessionManager. Com o C ++ Qt5, seu código seria algo como isto:

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

Referências:

por dmiller309 23.04.2014 / 00:07
2

Você pode parar o daemon usando um script bash que é executado no logout

Adicione a seguinte linha em lightdm.conf

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

lightdm.conf pode ser encontrado em

  • /etc/init/lightdm.conf

    ou

  • /etc/lightdm/lightdm.conf

Isso pode fazer o trabalho

    
por Back.Slash 22.04.2014 / 23:49