The GNU C Library - Database Example

Node: Database Example Prev: Group Database Up: Users and Groups

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

Up: Users and Groups