Это специфично для оконного менеджера, поэтому, вероятно, проще всего использовать функцию 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");