在Linux中使用getlogin函数 < >在Linux SISE10机器上登录并通过C++程序检查GETLogING(),得到一个正确的结果作为登录名。 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\u r()仍然显示旧的usename 一种解决方案是使用geteuid()。但是,出现上述问题的原因是什么?“在使用在Linux中使用getlogin函数 < >在Linux SISE10机器上登录并通过C++程序检查GETLogING(),得到一个正确的结果作为登录名。 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; },c++,linux,login,C++,Linux,Login,但是在使用su-name2之后 我现在已经更改了登录名。 但是getlogin\u r()仍然显示旧的usename 一种解决方案是使用geteuid()。但是,出现上述问题的原因是什么?“在使用su-name2后,我更改了登录名”-不,您没有。您已更改用户id,而不是登录名 su的手册页提到了-选项:“提供一个与用户直接登录时所期望的环境相似的环境。”显然,“相似”不同于“相同”。具体地说,su-不在/var/run/utmp中存储登录记录。“使用su-name2后,我已更改登录”-不,您没有
su-name2
后,我更改了登录名”-不,您没有。您已更改用户id,而不是登录名
su
的手册页提到了-
选项:“提供一个与用户直接登录时所期望的环境相似的环境。”显然,“相似”不同于“相同”。具体地说,su-
不在/var/run/utmp中存储登录记录。“使用su-name2后,我已更改登录”-不,您没有。您已更改用户id,而不是登录名
su
的手册页提到了-
选项:“提供一个与用户直接登录时所期望的环境相似的环境。”显然,“相似”不同于“相同”。具体来说,su-
没有将登录记录存储在/var/run/utmp中。对我们许多人来说,这是在经验的低谷中吸取的教训:)对我们许多人来说,这是在经验的低谷中吸取的教训:)