GETPWENT.3
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:4k
源码类别:

操作系统开发

开发平台:

C/C++

  1. GETPWENT(3)               Minix Programmer's Manual                GETPWENT(3)
  2. NAME
  3.      getpwent, getpwnam, getpwuid, setpwent, endpwent,  setpwfile  -  password
  4.      file routines
  5. SYNOPSIS
  6.      #include <pwd.h>
  7.      struct passwd *getpwent(void)
  8.      struct passwd *getpwnam(const char *name)
  9.      struct passwd *getpwuid(uid_t uid)
  10.      int setpwent(void)
  11.      void endpwent(void)
  12.      void setpwfile(const char *file)
  13. DESCRIPTION
  14.      These functions are used to obtain information from  the  password  file.
  15.      They return this information in a struct passwd as defined by <pwd.h>:
  16.      struct passwd {
  17.          char  *pw_name;      /* login name */
  18.          char  *pw_passwd;    /* encrypted password */
  19.          uid_t pw_uid;        /* numeric user id */
  20.          gid_t pw_gid;        /* numeric group id */
  21.          char  *pw_gecos;     /* user full name and other info */
  22.          char  *pw_dir;       /* user's home directory */
  23.          char  *pw_shell;     /* name of the user's shell */
  24.      };
  25.      Getpwent() reads the password file entry by entry.  Getpwnam() scans  the
  26.      entire  password file for the user with the given name.  Getpwuid() looks
  27.      for the first user with the given uid.   The  setpwent()  and  endpwent()
  28.      functions  are  used  to  open  and  later close the password file.  With
  29.      setpwfile() one can specify the  file  to  read  other  than  the  normal
  30.      password  file.   This  only sets the name, the next setpwent() call will
  31.      open the file.  Do not touch the file  name  while  it  is  active.   Use
  32.      setpwfile(NULL) to revert back to the normal password file.
  33.      The usual way to scan the password file is (error checking omitted):
  34.           setpwent();
  35.           while ((pw = getpwent()) != NULL)
  36.                   if (appropriate_test(pw)) break;
  37.           endpwent();
  38.      The pw variable contains the entry  that  is  wanted  if  non-NULL.   The
  39.      getpwnam()  and  getpwuid() functions are implemented as in this example,
  40.      with error checking of course.
  41.                                                                              1
  42. GETPWENT(3)               Minix Programmer's Manual                GETPWENT(3)
  43.      Getpwent() calls setpwent() if this has not yet  been  done.   Setpwent()
  44.      first  calls  endpwent()  if  the  password  file  is still open.  (Other
  45.      implementations may simply rewind the file.)
  46. FILES
  47.      /etc/passwd    The password file database.
  48. SEE ALSO
  49.      cuserid(3), getlogin(3), getgrent(3), passwd(5).
  50. DIAGNOSTICS
  51.      Setpwent() has the same return value and error codes as the open(2)  call
  52.      it uses to open the password file.  The getxxx() functions return NULL on
  53.      end of file, entry not found, or error.  You can set errno to zero before
  54.      the call and check it after.
  55. NOTES
  56.      All getxxx()  routines  return  a  pointer  to  static  storage  that  is
  57.      overwritten in each call.
  58.      Only getpwnam() and getpwuid() are defined by POSIX.   The  _MINIX_SOURCE
  59.      macro  must  be  defined  before  including  <pwd.h>  to  make  the other
  60.      functions visible.  The  pw_passwd  and  pw_gecos  fields  are  also  not
  61.      defined  by POSIX, but are always visible.  Portable code cannot reliably
  62.      detect errors by setting errno to zero.  Under Minix it is better to make
  63.      a  getpwent() scan if you need to look up several user-id's or names, but
  64.      portable code had better use several getpwuid() or getpwnam() calls.  The
  65.      getpwent()  is  usually  available  on  other  systems,  but  may be very
  66.      expensive.
  67. AUTHOR
  68.      Kees J. Bot (kjb@cs.vu.nl)
  69.                                                                              2