当我在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;
}
Run Code Online (Sandbox Code Playgroud)
但在使用su - name2后,我现在更改了登录名.但是getlogin_r()仍然显示旧的usename.
一种解决方案是使用geteuid().但是上述问题的原因是什么呢?