|
≫ |
|
|
|
HP OpenVMS HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)
グループ ID に対応するグループ・データベース・エントリを取得します。
形式
#include <types.h>
#include <grp.h>
int getgrgid_r (gid_t gid, struct group *grp, char *buffer, size_t
bufsize, struct group **result);
引数
gidグループ・データベース・エントリを取り出すグループのグループ ID。
grp取り出した
group構造体を保持する記憶域。
bufferデータベース内の最長のグループ・エントリを保持できる作業バッファ。
bufsize
buffer の長さ (文字数)。
result成功して戻った場合, result は取り出した
group構造体を指します。
失敗して戻った場合, result には NULL が設定されます。
説明
getgrgid_r関数は, grp が指す
group構造体をアップデートし, result が指すメモリ位置に,この構造体へのポインタを格納します。この構造体には, gid が一致したグループ・データベースのエントリが格納されています。
group構造体から指す記憶域は, buffer 引数のメモリ (サイズは bufsize 文字) から割り当てられます。このバッファに必要なサイズは,
sysconf関数の _SC_GETGR_R_SIZE_MAX パラメータで調べることができます。エラーの場合,または要求されたエントリが見つからない場合は, result が指すメモリ位置に,NULL ポインタが返されます。
戻り値
0
|
成功を示します。
|
x
|
エラーの場合,この関数は以下のいずれかの値を戻り値として設定します。
- EACCES -- ユーザ・プロセスが,ユーザ登録ファイルにアクセスするための適切な特権を持っていません。
- EIO -- 入出力エラーが発生しました。
- EINTR --
getgrgid
の実行中にシグナルをキャッチしました。
- EMFILE -- 呼び出し元プロセス内で, OPEN_MAX 個のファイル記述子が現在オープンされています。
- ENFILE -- 許されている最大個数のファイルが,現在システム内でオープンされています。
- ERANGE --
buffer 引数と
bufsize 引数で指定された記憶域は,得られた
group
構造体から指すデータを格納するには不十分です。
|
|