Database Example - The GNU C Library

Next: Netgroup Database, Previous: Group Database, Up: Users and Groups

### 29.15 User and Group Database Example

Here is an example program showing the use of the system database inquiry functions. The program prints some information about the user running the program.

         #include <grp.h>
         #include <pwd.h>
         #include <sys/types.h>
         #include <unistd.h>
         #include <stdlib.h>

         int
         main (void)
         {
           uid_t me;
           struct passwd *my_passwd;
           struct group *my_group;
           char **members;

           /* Get information about the user ID. */
           me = getuid ();
           my_passwd = getpwuid (me);
           if (!my_passwd)
             {
               printf ("Couldn't find out about user %d.\n", (int) me);
               exit (EXIT_FAILURE);
             }

           /* Print the information. */
           printf ("I am %s.\n", my_passwd->pw_gecos);
           printf ("My login name is %s.\n", my_passwd->pw_name);
           printf ("My uid is %d.\n", (int) (my_passwd->pw_uid));
           printf ("My home directory is %s.\n", my_passwd->pw_dir);
           printf ("My default shell is %s.\n", my_passwd->pw_shell);

           /* Get information about the default group ID. */
           my_group = getgrgid (my_passwd->pw_gid);
           if (!my_group)
             {
               printf ("Couldn't find out about group %d.\n",
                       (int) my_passwd->pw_gid);
               exit (EXIT_FAILURE);
             }

           /* Print the information. */
           printf ("My default group is %s (%d).\n",
                   my_group->gr_name, (int) (my_passwd->pw_gid));
           printf ("The members of this group are:\n");
           members = my_group->gr_mem;
           while (*members)
             {
               printf ("  %s\n", *(members));
               members++;
             }

           return EXIT_SUCCESS;
         }

Here is some output from this program:

         I am Throckmorton Snurd.
         My login name is snurd.
         My uid is 31093.
         My home directory is /home/fsg/snurd.
         My default shell is /bin/sh.
         My default group is guest (12).
         The members of this group are:
           friedman
           tami