如何使用 C++ 在 Ubuntu 上强制用户注销?

How to force user logoff on Ubuntu using C++?

在 Ubuntu(16.04 或 18.04)中,是否有任何方法可以强制用户使用 C++ 注销?就像满足条件一样,我希望程序注销当前用户。
在 windows 10 中,我们可能可以像这样使用 ExitWindows https://docs.microsoft.com/en-us/windows/desktop/shutdown/how-to-log-off-the-current-user

Ubuntu可以吗?我找不到如何做的好例子。

这是 window-manager 特定的,因此使用 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");

您可以使用 c++ system()stdlib.h 调用任何操作系统命令。

#include<stdlib.h>

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

据我所知,在 ubuntu 中执行上述代码后,如果有任何未保存的工作,它会在 60 秒后自动注销。