在 Linux 中使用 getlogin 函数

Use of getlogin function in Linux

本文关键字:getlogin 函数 Linux      更新时间:2023-10-16

当我登录Linux Suse10机器并通过C++程序检查getlogin_r()时,我得到了一个正确的结果作为我的登录名。

int main()
{
    char szUserName[64] = {0};
    int nGet = getlogin_r(szUserName, sizeof(szUserName)-1);
    if(0 != nGet)
        {
            printerr();
        }
    printf("%sn", szUserName);
    char * szHome = getlogin();
    printf("%sn", szHome);
    return 0;
}

但是在使用 su - 名称 2 之后我现在更改了登录名。但是getlogin_r()仍然显示较旧的用户名。

一种解决方案是使用 geteuid()。但是上述问题的原因是什么

"

使用su - name2后,我更改了登录名" - 不,你没有。您更改的是用户 ID,而不是登录名。

su的手册页对-选项是这样说的:"提供一个类似于用户直接登录时所期望的环境。显然,"相似"与"相同"不同。 具体来说,su - 不会在/var/run/utmp 中存储登录记录。