Same on Ubuntu:
$ ./getlgn
method 1 getuid : user=nicolas
method 2 geteuid: user=nicolas
$ sudo ./getlgn
[sudo] password for nicolas:
method 1 getuid : user=root
method 2 geteuid: user=root
?
Le samedi 06 d?cembre 2008 ? 18:27 +0100, E. MARC a ?crit :
> 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
>
>