当我登录 Linux Suse10 机器并通过 C++ 程序检查 getlogin_r() 时,我得到了一个正确的结果作为我的登录名。
int main()
{
char szUserName[64] = {0};
int nGet = getlogin_r(szUserName, sizeof(szUserName)-1);
if(0 != nGet)
{
printerr();
}
printf("%s\n", szUserName);
char * szHome = getlogin();
printf("%s\n", szHome);
return 0;
}
但是在使用 su - name2 之后,我现在更改了登录名。但是 getlogin_r() 仍然显示旧的用户名。
一种解决方案是使用 geteuid()。但是上述问题的原因是什么