getgrnamのヘルプ・マニュアル
日本語 英語
getgrnam --help
man getgrnam
GETGRNAM(3) Linux Programmer’s Manual GETGRNAM(3)
名前
getgrnam, getgrnam_r, getgrgid, getgrgid_r - グループファイルエントリの
取り出し
書式
#include
#include
struct group *getgrnam(const char *name);
struct group *getgrgid(gid_t gid);
int getgrnam_r(const char *name, struct group *grp,
char *buf, size_t buflen, struct group **result);
int getgrgid_r(gid_t gid, struct group *grp,
char *buf, size_t buflen, struct group **result);
glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):
getgrnam_r(), getgrgid_r():
_POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _BSD_SOURCE ||
_SVID_SOURCE || _POSIX_SOURCE
説明
getgrnam() 関数は、グループ名 name にマッチするグループ・データベース
のエントリを要素毎に分解し、各要素を格納した構造体へのポインタを返す (
パ ス ワ ード・データベースの例: ローカルのグループファイル /etc/group,
NIS, LDAP)。
getgrgid() 関数は、グループ ID uid にマッチするグループ・データベー ス
のエントリを要素毎に分解し、各要素を格納した構造体へのポインタを返す。
group 構造体は で以下のように定義されている:
struct group {
char *gr_name; /* グループ名 */
char *gr_passwd; /* グループのパスワード */
gid_t gr_gid; /* グループ ID */
char **gr_mem; /* グループのメンバ */
};
この構造体のフィールドの詳細は group(5) を参照のこと。
getgrnam_r() と getgrgid_r() 関数は、それぞれ getgrnam() と getgrgid()
と同じ情報を取得するが、取得した group 構造体を grp が指す領域に格納 す
る 。group 構造体のメンバーが指す文字列は、サイズ buflen のバッファ buf
に格納される。成功した場合 *gbufp には結果へのポインタが格納される。 エ
ン ト リ が 見つからなかった場合やエラーが発生した場合には *result には
NULL が入る。
呼び出し
sysconf(_SC_GETGR_R_SIZE_MAX)
は、 errno を変更せずに -1 を返すか、 buf の初期サイズの推奨値を返す。(
こ のサイズが小さすぎる場合、呼び出しは ERANGE で失敗し、この場合には呼
び出し側はバッファを大きくしてから再度呼び出すことができる。)
返り値
getgrnam() と getgrgid() 関数は、 group 構造体へのポインタを返す。 マ
ッ チするエントリが見つからなかった場合や、 エラーが発生した場合は NULL
を返す。 エラーが起こった場合、 errno が適切に設定される。呼び出しの 後
で errno をチェックしたい場合は、 呼び出しの前に (この値を) 0 に設定し
ておくべきである。
返り値は静的な領域を指しており、その後の getgrent(3), getgrgid(), get-
grnam() の 呼 び 出しで上書きされるかもしれない。 (返されたポインタを
free(3) に渡さないこと。)
成功すると、 getgrnam_r() と getgrgid_r() は 0 を返し、 *result に
grp を設定する。 マッチするグループ・エントリが見つからなかった場合には
、 0 を返し、 *result に NULL を設定する。エラーの場合、エラー番号を 返
し、 *result に NULL を設定する。
エラー
0 または ENOENT または ESRCH または EBADF または EPERM または ...
指定された name または gid が見つからなかった。
EINTR シグナルが捕捉された。
EIO I/O エラー。
EMFILE 呼 び 出 し 元プロセスがオープンしているファイル数が すでに上限
(OPEN_MAX) であった。
ENFILE システムでオープンされているファイル数がすでに上限であった。
ENOMEM group 構造体を割り当てるためのメモリが不十分。
ERANGE 与えられたバッファ空間が不十分である。
ファイル
/etc/group
ローカルのグループ・データベースファイル
属性
マルチスレッディング (pthreads(7) 参照)
関数 getgrnam() と getgrgid() はスレッドセーフではない。
関数 getgrnam_r() と getgrgid_r() はスレッドセーフである。
準拠
SVr4, 4.3BSD, POSIX.1-2001.
注意
上記の「返り値」以下の記述は POSIX.1-2001 に拠る。 この標準は「(エン ト
リ が) 見 つ からないこと」をエラーとしていないので、そのような場合に
errno がどのような値になるかを定めていない。 そのため、エラーを認識する
こ と は 不 可能である。 POSIX に準拠して、エントリが見つからない場合は
errno を変更しないようにすべきである、と主張する人もいるかもしれない 。
様 々 な UNIX 系のシステムで試してみると、そのような場合には 0, ENOENT,
EBADF, ESRCH, EWOULDBLOCK, EPERM といった様々な値が返される。 他の値 が
返されるかもしれない。
関連項目
endgrent(3), fgetgrent(3), getgrent(3), getpwnam(3), setgrent(3),
group(5)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.63 の一部 で
あ る 。 プ ロ ジ ェ クトの説明とバグ報告に関する情報は http://www.ker-
nel.org/doc/man-pages/ に書かれている。
2013-07-22 GETGRNAM(3)
GETGRNAM(3) Linux Programmer’s Manual GETGRNAM(3)
NAME
getgrnam, getgrnam_r, getgrgid, getgrgid_r - get group file entry
SYNOPSIS
#include
#include
struct group *getgrnam(const char *name);
struct group *getgrgid(gid_t gid);
int getgrnam_r(const char *name, struct group *grp,
char *buf, size_t buflen, struct group **result);
int getgrgid_r(gid_t gid, struct group *grp,
char *buf, size_t buflen, struct group **result);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
getgrnam_r(), getgrgid_r(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE ||
_BSD_SOURCE || _SVID_SOURCE || _POSIX_SOURCE
DESCRIPTION
The getgrnam() function returns a pointer to a structure containing the
broken-out fields of the record in the group database (e.g., the local
group file /etc/group, NIS, and LDAP) that matches the group name name.
The getgrgid() function returns a pointer to a structure containing the
broken-out fields of the record in the group database that matches the
group ID gid.
The getgrnam_r() and getgrgid_r() functions obtain the same informa-
tion, but store the retrieved group structure in the space pointed to
by grp. This group structure contains pointers to strings, and these
strings are stored in the buffer buf of size buflen. A pointer to the
result (in case of success) or NULL (in case no entry was found or an
error occurred) is stored in *result.
The group structure is defined in as follows:
struct group {
char *gr_name; /* group name */
char *gr_passwd; /* group password */
gid_t gr_gid; /* group ID */
char **gr_mem; /* group members */
};
The call
sysconf(_SC_GETGR_R_SIZE_MAX)
returns either -1, without changing errno, or an initial suggested size
for buf. (If this size is too small, the call fails with ERANGE, in
which case the caller can retry with a larger buffer.)
RETURN VALUE
The getgrnam() and getgrgid() functions return a pointer to a group
structure, or NULL if the matching entry is not found or an error
occurs. If an error occurs, errno is set appropriately. 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(3), getgrgid(), or getgrnam(). (Do not
pass the returned pointer to free(3).)
On success, getgrnam_r() and getgrgid_r() return zero, and set *result
to grp. If no matching group record was found, these functions return
0 and store NULL in *result. In case of error, an error number is
returned, and NULL is stored in *result.
ERRORS
0 or ENOENT or ESRCH or EBADF or EPERM or ...
The given name or gid was not found.
EINTR A signal was caught.
EIO I/O error.
EMFILE The maximum number (OPEN_MAX) of files was open already in the
calling process.
ENFILE The maximum number of files was open already in the system.
ENOMEM Insufficient memory to allocate group structure.
ERANGE Insufficient buffer space supplied.
FILES
/etc/group
local group database file
CONFORMING TO
SVr4, 4.3BSD, POSIX.1-2001.
NOTES
The formulation given above under "RETURN VALUE" is from POSIX.1-2001.
It does not call "not found" an error, hence does not specify what
value errno might have in this situation. But that makes it impossible
to recognize errors. One might argue that according to POSIX errno
should be left unchanged if an entry is not found. Experiments on var-
ious Unix-like systems shows that lots of different values occur in
this situation: 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM and proba-
bly others.
SEE ALSO
endgrent(3), fgetgrent(3), getgrent(3), getpwnam(3), setgrent(3),
group(5)
COLOPHON
This page is part of release 3.22 of the Linux man-pages project. A
description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
2009-03-30 GETGRNAM(3)