Le samedi 6 d?cembre 2008, ? 18:10, Julien BLACHE a ?crit?:
> Nicolas Martin <nicolas.martin at freesurf.fr> wrote:
>
> Hi,
>
> > ? struct passwd *uid;
> > ? uid = getpwuid(geteuid());
> > ? printf("user=%s\n", uid->pw_name);
> >
> > Prints my username correctly. Also prints root if runned with sudo ;-)
>
> Yep, use getuid() instead of geteuid() if you want to avoid that.
On debian, I get same result with both functions:
#include <pwd.h>
#include <stdio.h>
int main()
{
? struct passwd *uid;
? uid = getpwuid(getuid());
? printf("method 1 getuid : user=%s\n", uid->pw_name);
? uid = getpwuid(geteuid());
? printf("method 2 geteuid: user=%s\n", uid->pw_name);
}
erwan at PC1:~$ ./myname
method 1 getuid : user=erwan
method 2 geteuid: user=erwan
erwan at PC1:~$ sudo ./myname
method 1 getuid : user=root
method 2 geteuid: user=root
Is there a bug?
EM
> Also, you want some error checking in there... :)
>
> JB.
>
> --
> Julien BLACHE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <http://www.jblache.org>
> <jb at jblache.org> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?GPG KeyID 0xF5D65169