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


Reply via email to