@node getgroups
@subsection @code{getgroups}
@findex getgroups

POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9799919799/functions/getgroups.html}

Gnulib module: getgroups
@mindex getgroups

Portability problems fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
mingw, MSVC 14.
@item
On some platforms, this function fails to reject a negative count,
even though that is less than the size that would be returned:
macOS 14, FreeBSD 13.0.
@item
On NeXTstep 3.2, @code{getgroups (0, NULL)} always fails.  See macro
@samp{AC_FUNC_GETGROUPS}.
@item
On very old systems, this function operated on an array of @samp{int},
even though that was a different size than an array of @samp{gid_t}.
@end itemize

Portability problems not fixed by Gnulib:
@itemize
@item
This function is unsafe to call between @code{fork} and @code{exec} if
the parent process is multi-threaded.
@item
It is unspecified whether the effective group id will be included in
the returned list, nor whether the list will be sorted in any
particular order.  For that matter, some platforms include the
effective group id twice, if it is also a member of the current
supplemental group ids.
@end itemize

@mindex mgetgroups
The Gnulib module @code{mgetgroups} provides a similar API.
