Как заставить пользователя выйти из системы на Ubuntu с помощью C ++? - PullRequest
1 голос
/ 12 марта 2019

Есть ли способ заставить пользователя выйти из системы с помощью C ++ в Ubuntu (16.04 или 18.04)?Например, если условие выполнено, я хочу, чтобы программа вышла из системы текущего пользователя.
В Windows 10 мы, вероятно, можем использовать ExitWindows вот так https://docs.microsoft.com/en-us/windows/desktop/shutdown/how-to-log-off-the-current-user.

Возможно ли это в Ubuntu?Я не мог найти хороший пример, как это сделать.

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Вы можете вызвать любую команду операционной системы, используя c ++ system() из stdlib.h.

#include<stdlib.h>

int main(){
    system("gnome-session-quit"); //logs out.
}

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

1 голос
/ 12 марта 2019

Это специфично для оконного менеджера, поэтому, вероятно, проще всего использовать функцию exec для этого.Ubuntu 18.04 по умолчанию использует Gnome, поэтому в Gnome вы должны сделать следующее:

#include <unistd.h>
#include <stdlib.h>

int main()
{
    if (execl("/usr/bin/gnome-session-quit", "/usr/bin/gnome-session-quit",
            "--no-prompt", (char*) NULL) < 0) 
        printf("Failed to logout\n");
}

Я не совсем уверен, где находится программа loginctl для KDE, поэтому я предполагаю, что она находится вто же место, поэтому для KDE вы бы:

    #include <stdlib.h>
    ...
    char *user=getenv("USER");
    if (execl("/usr/bin/loginctl", "/usr/bin/loginctl",
            user, (char*) NULL) < 0) 
        printf("Failed to logout\n");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...