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()は引き続き古いusenameを表示します。
1つの解決策は、geteuid()を使用することです。しかし、上記の問題の理由は何ですか