名 前
getgrnam, getgrnam_r, getgrgid, getgrgid_r − グ ル ー プ フ ァ イ ル エ ン ト リ ー の 取 り 出 し
書 式
#include
<sys/types.h>
#include <grp.h>
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 構 造 体 は <grp.h> で 以 下 の よ う に 定 義 さ れ て い る :
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(), getgrnam() の 呼 び 出 し で 上 書 き さ れ る か も し れ な い 。 (返 さ れ た ポ イ ン タ ー を 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.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。