getgrent(3)


NAME

   getgrent, setgrent, endgrent - get group file entry

SYNOPSIS

   #include <sys/types.h>
   #include <grp.h>

   struct group *getgrent(void);

   void setgrent(void);

   void endgrent(void);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

   setgrent():
       _XOPEN_SOURCE >= 500
           || /* Glibc since 2.19: */ _DEFAULT_SOURCE
           || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

   getgrent(), endgrent():
       _XOPEN_SOURCE >= 500
           || /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
           || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

DESCRIPTION

   The getgrent() function returns a pointer to a structure containing the
   broken-out fields of a record in the group database  (e.g.,  the  local
   group  file  /etc/group,  NIS, and LDAP).  The first time getgrent() is
   called, it returns the first entry; thereafter, it  returns  successive
   entries.

   The setgrent() function rewinds to the beginning of the group database,
   to allow repeated scans.

   The endgrent() function is used to close the group database  after  all
   processing has been performed.

   The group structure is defined in <grp.h> as follows:

       struct group {
           char   *gr_name;        /* group name */
           char   *gr_passwd;      /* group password */
           gid_t   gr_gid;         /* group ID */
           char  **gr_mem;         /* NULL-terminated array of pointers
                                      to names of group members */
       };

   For more information about the fields of this structure, see group(5).

RETURN VALUE

   The getgrent() function returns a pointer to a group structure, or NULL
   if there are no more entries or an error occurs.

   Upon error, errno may be set.  If one wants to check  errno  after  the
   call, it should be set to zero before the call.

   The  return value may point to a static area, and may be overwritten by
   subsequent calls to getgrent(), getgrgid(3), or getgrnam(3).   (Do  not
   pass the returned pointer to free(3).)

ERRORS

   EAGAIN The  service  was temporarily unavailable; try again later.  For
          NSS backends in glibc this indicates a temporary  error  talking
          to the backend.  The error may correct itself, retrying later is
          suggested.

   EINTR  A signal was caught; see signal(7).

   EIO    I/O error.

   EMFILE The per-process limit on the number of open file descriptors has
          been reached.

   ENFILE The system-wide limit on the total number of open files has been
          reached.

   ENOENT A necessary input file cannot be found.   For  NSS  backends  in
          glibc this indicates the backend is not correctly configured.

   ENOMEM Insufficient memory to allocate group structure.

   ERANGE Insufficient buffer space supplied.

FILES

   /etc/group
          local group database file

ATTRIBUTES

   For   an   explanation   of   the  terms  used  in  this  section,  see
   attributes(7).

   ┌────────────┬───────────────┬─────────────────────────────┐
   │InterfaceAttributeValue                       │
   ├────────────┼───────────────┼─────────────────────────────┤
   │getgrent()  │ Thread safety │ MT-Unsafe race:grent        │
   │            │               │ race:grentbuf locale        │
   ├────────────┼───────────────┼─────────────────────────────┤
   │setgrent(), │ Thread safety │ MT-Unsafe race:grent locale │
   │endgrent()  │               │                             │
   └────────────┴───────────────┴─────────────────────────────┘
   In  the  above  table, grent in race:grent signifies that if any of the
   functions setgrent(), getgrent(), or endgrent() are used in parallel in
   different threads of a program, then data races could occur.

CONFORMING TO

   POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.

SEE ALSO

   fgetgrent(3), getgrent_r(3), getgrgid(3), getgrnam(3), getgrouplist(3),
   putgrent(3), group(5)

COLOPHON

   This page is part of release 4.09 of the Linux  man-pages  project.   A
   description  of  the project, information about reporting bugs, and the
   latest    version    of    this    page,    can     be     found     at
   https://www.kernel.org/doc/man-pages/.

                              2016-03-15                       GETGRENT(3)


More Linux Commands

manpages/systemd.scope.5.html
systemd.scope(5) Scope unit configuration - Linux man page
Scope units are not configured via unit configuration files, but are only created programmatically using the bus interfaces of systemd. They are named similar t

manpages/xdr_int.3.html
xdr_int(3) - library routines for external data representati
These routines allow C programmers to describe arbitrary data structures in a machine-independent fashion. Data for remote procedure calls are transmitted using

manpages/XUnsetICFocus.3.html
XUnsetICFocus(3) - set and unset input context focus........
The XSetICFocus function allows a client to notify an input method that the focus window attached to the specified input context has received keyboard focus. Th

manpages/glTexCoord2i.3gl.html
glTexCoord2i(3gl) - set the current texture coordinates.....
glTexCoord specifies texture coordinates in one, two, three, or four dimensions. glTexCoord1 sets the current texture coordinates to (s, 0, 0, 1); a call to glT

manpages/ldap_dn2ad_canonical.3.html
ldap_dn2ad_canonical(3) - LDAP DN handling routines.........
These routines allow LDAP entry names (Distinguished Names, or DNs) to be obtained, parsed, converted to a user-friendly form, and tested. A DN has the form des

manpages/FcUtf16Len.3.html
FcUtf16Len(3) - count UTF-16 encoded chars - Linux man page
Counts the number of Unicode chars in len bytes of src. Bytes of src are combined into 16-bit units according to endian. Places that count in nchar. wchar conta

manpages/gluEndCurve.3gl.html
gluEndCurve(3gl) - delimit a NURBS curve definition.........
Use gluBeginCurve to mark the beginning of a NURBS curve definition. After calling gluBeginCurve, make one or more calls to gluNurbsCurve to define the attribut

manpages/dmeventd.8.html
dmeventd(8) - Device-mapper event daemon - Linux man page...
dmeventd is the event monitoring daemon for device-mapper devices. Library plugins can register and carry out actions triggered when particular events occur. LV

manpages/perl586delta.1.html
perl586delta(1) - what is new for perl v5.8.6 (Man Page)....
This document describes differences between the 5.8.5 release and the 5.8.6 release. Incompatible Changes There are no changes incompatible with 5.8.5. Core Enh

manpages/Net::Server::MultiType.3pm.html
Net::Server::MultiType(3pm) - Net::Server personality.......
Please read the pod on Net::Server first. This module is a personality, or extension, or sub class, of the Net::Server module. This personality is intended to a

manpages/Tcl_GlobalEvalObj.3.html
Tcl_GlobalEvalObj(3) - execute Tcl scripts - Linux man page
The procedures described here are invoked to execute Tcl scripts in various forms. Tcl_EvalObjEx is the core procedure and is used by many of the others. It exe

manpages/libpngpf.3.html
libpngpf(3) - Portable Network Graphics (PNG) Reference Libr
The functions previously listed here are used privately by libpng and are not available for use by applications. They are not exported to applications using sha





We can't live, work or learn in freedom unless the software we use is free.