Rechercher une page de manuel
getgrouplist
Langue: ja
Version: 2003-11-18 (mandriva - 01/05/08)
Section: 3 (Bibliothèques de fonctions)
名前
getgrouplist - ユーザが所属するグループのリスト書式
#include <grp.h>
int getgrouplist(const char *user, gid_t group, gid_t *groups, int *ngroups);
説明
getgrouplist() 関数は user が所属する全てのグループをグループデータベースで調べる。 グループ ID *ngroups までに対応するグループが、配列 groups に格納される; この関数からの返り値は、実際に格納されたグループ ID の数である。 グループ group は getgrouplist() で返されるグループのリストに自動的に含められる。返り値
見つかった全てのグループの数より *ngroups が小さい場合、 getgrouplist() は値 `-1' を返す。 成功した場合も、失敗した場合も、実際のグループの数が *ngroups に格納される。バージョン
この関数は glibc 2.2.4 から存在する。準拠
この関数は非標準である。ほとんどの BSD に存在する。バグ
この関数の glibc 2.3.2 での実装は間違えている: 実際のグループの数が *ngroups より大きい場合、メモリを上書きしてしまう。例
/* これは glibc 2.3.2 ではクラッシュする。*/ #include <stdio.h> #include <stdlib.h> #include <grp.h> #include <pwd.h> int main(void) { int i, ng = 0; char *user = "who"; /* ユーザ名をここに書く。 */ gid_t *groups = NULL; struct passwd *pw = getpwnam(user); if (pw == NULL) exit(EXIT_SUCCESS); if (getgrouplist(user, pw->pw_gid, NULL, &ng) < 0) { groups = (gid_t *) malloc(ng * sizeof (gid_t)); getgrouplist(user, pw->pw_gid, groups, &ng); } for(i = 0; i < ng; i++) printf("%d\n", groups[i]); exit(EXIT_SUCCESS); }
関連項目
getgroups(3), setgroups(3)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre