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

标签 c++ ubuntu logout

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

在Ubuntu下可以吗?我找不到如何做到这一点的好例子。

最佳答案

这是特定于窗口管理器的,因此使用 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");
}

我不太确定 KDE 的 loginctl 程序位于何处,因此我假设它位于同一位置,因此对于 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++ - 如何使用 C++ 在 Ubuntu 上强制用户注销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55113150/

相关文章:

c++ - 为什么我不能将模板函数指针传递给可变参数函数?

c++ - 如何使用 sys/mount 挂载 NFS 系统?

linux - Bash 脚本 - 检查用户是否登录

jquery - 使用 Freshdesk api 创建票证,响应始终为 { "logout": "success" }

java - 如何使用 xml 在 spring security 中禁用注销确认?

c++ - 运算符 x++;和++x;对于 int。哪个更快?为什么?

c++ - 带 CUDA 内联汇编的 LLVM

C++ 私有(private)指针 "leaking"?

ubuntu - Anaconda 中的 FileChooserDialog 图标损坏如何修复?

jsp - 防止用户在注销后看到以前访问过的安全页面