GETGROUPS(2)        Linux Programmer's Manual        GETGROUPS(2)

NAME
       getgroups, setgroups - get/set list of supplementary group
       IDs

SYNOPSIS
       #include <unistd.h>

       int getgroups(int size, gid_t list[]);

       #define __USE_BSD
       #include <grp.h>

       int setgroups(size_t size, const gid_t *list);

DESCRIPTION
       getgroups
              Up to size supplementary  groups  are  returned  in
              list.   If  size is zero, list is not modified, but
              the total number of supplementary  groups  for  the
              process is returned.

       setgroups
              Sets  the  supplementary  groups  for  the process.
              Only the super-user may use this function.

RETURN VALUE
       getgroups
              On success, the number of supplementary  group  IDs
              is  returned.   On error, -1 is returned, and errno
              is set appropriately.

       setgroups
              On success, zero is  returned.   On  error,  -1  is
              returned, and errno is set appropriately.

ERRORS
       EFAULT list has an invalid address.

       EPERM  For setgroups, the user is not the super-user.

       EINVAL For setgroups, size is greater than NGROUPS (32 for
              Linux 2.0.32).  For getgroups, size  is  less  than
              the  number  of supplementary group IDs, but is not
              zero.

CONFORMING TO
       SVr4, SVID (issue 4 only; these calls were not present  in
       SVr3),  X/OPEN,  4.3BSD.   The  getgroups  function  is in
       POSIX.1.  Since setgroups requires privilege,  it  is  not
       covered by POSIX.1.

BUGS
       The __USE_BSD flag probably shouldn't be required for set-
       groups.

SEE ALSO
       initgroups(3), getgid(2), setgid(2)

Linux 2.0.32             10 December 1997                       1