If the process has appropriate privilege,
the initgroups
function shall initialize the
Supplementary Group IDs for the current process
by reading the group database and using all groups of which
user is a member. The additional group
group is also added to the list.
On success, 0 is returned. On error, -1 is returned and the global variable errno is set appropriately.