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