GETGROUPS(2)

名前
getgroups, setgroups - グループのアクセス・リストを設定/取得する

書式
#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);

書式

getgroups
    最大 size までの追加のグループ(group)を list に返す。 size がゼロならば、 list は修正されないが、そのプロセスの追加のグループの合計数が返される。

setgroups
    そのプロセスに追加のグループを設定する。スーパー・ユーザーのみが この関数を使用できる。

返り値

getgroups
    成功した場合は、追加のグループ ID の数を返す。 エラーの場合は -1 を返し errno が適切に設定される。

setgroups
    成功した場合はゼロが返される。エラーならば -1 が返され、 errno が適切に設定される。

エラー

EFAULT
    list が不正なアドレスである。

EPERM
    setgroups で、ユーザーがスーパー・ユーザーでない。

EINVAL
    setgroups で、 size が NGROUPS (Linux 2.0.32 では 32) より大きい。 getgroups の場合 size が追加のグループ ID の数より小さいがゼロでない。

準拠
SVr4, SVID (4版のみ; SVr3 にはこれたのコールは存在しない), X/OPEN, 4.3BSD。 getgroups 関数は POSIX.1 に準拠している。 setgroups は特権を必要とするため、POSIX.1 に従っていない。

バグ
__USE_BSD フラグは setgroups にはたぶん必要ないだろう。

関連項目
initgroups(3), getgid(2), setgid(2)