GETGRENT.3
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:4k
源码类别:

操作系统开发

开发平台:

WINDOWS

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