LINUX.ORG.RU

[qt][c++] logout


0

1

Доброе утро, ЛОР!

Необходимо сделать logout программно. Работать должно и в Linux, и во FreeBSD.

Это, видимо, возможно реализовать через libPAM, но гугл говорит, что эта либа в этих системах реализована по-разному (хотя API может быть и идентичным, не проверял). Разные модули писать для разных систем сильно не хочется.

Если все же PAM, то буду благодарен за название конкретной функции в нем.

UPD:

system("killall -u `whoami`");
не подходит :(.

На машине может быть запущено несколько иксовых сессий от одного юзера, закрыта должна быть только текущая.

★★★★★

открой любое ДЕ

anonymous ()
Ответ на: комментарий от Jetty

Из собственной программы.

Кнопочку нажал - DE должно закрыться, и долнен открыться DM для ввода логина и пароля.

unfo ★★★★★ ()

для каждого ДЕ придется писать свой велосипед :)

Jetty ★★★★★ ()
Ответ на: комментарий от anonymous

вообще это коряво

Видимо ТС это понял и снял метку «Решено» с темы.

anonymous ()
Ответ на: комментарий от anonymous

Да, этот вариант и не подошел.

Я забыл учесть то, что на одной машине может быть несколько иксовых сессий одного и того же пользователя.

unfo ★★★★★ ()
Ответ на: комментарий от annulen

Этот вариант тоже не работает, он закрывает все, что можно закрыть, а нужно только то, что запущено только в рамках текущей иксовой сессии.

unfo ★★★★★ ()

logout из DE - нестандартизированная вещь, для каждого DE нужно писать свой костыль. Для KDE4 это делается через dbus вызовы:

qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout 0 0 2

В нативный код преобразуешь, я думаю, сам.

alex_custov ★★★★★ ()
Ответ на: комментарий от alex_custov

Да, видел такой вызов.

Эх, спасибо. Буду писать разные методы для разных DE.

unfo ★★★★★ ()

ps ax | grep X:
...
5141 tty1 Ss+ 6:08 /usr/bin/X :0 vt1 -nr -nolisten tcp -auth /var/run/kdm/A:zzz
...

echo $DISPLAY:
:0

???

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.