#include <sys/types.h> #include <pwd.h> struct passwd *getpwent(void); void setpwent(void); void endpwent(void);
glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):
getpwent(), setpwent(), endpwent():
_XOPEN_SOURCE >= 500
|| /* glibc >= 2.19: */ _DEFAULT_SOURCE
|| /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
setpwent() 関数を使うと、パスワードデータベースの先頭に戻る。
endpwent() 関数は、全ての処理が終わった後にパスワード データベースをクローズする。
passwd 構造体は、<pwd.h> で以下のように定義されている:
struct passwd {
char *pw_name; /* ユーザー名 */
char *pw_passwd; /* ユーザーのパスワード */
uid_t pw_uid; /* ユーザー ID */
gid_t pw_gid; /* グループ ID */
char *pw_gecos; /* ユーザー情報 */
char *pw_dir; /* ホームディレクトリ */
char *pw_shell; /* シェルプログラム */
};
この構造体のフィールドの詳細は passwd(5) を参照のこと。
返り値は静的な領域を指しており、その後の getpwent(), getpwnam(3), getpwuid(3) の呼び出しで上書きされるかもしれない。 (返されたポインターを free(3) に渡さないこと。)
| インターフェース | 属性 | 値 |
| getpwent() | Thread safety |
MT-Unsafe race:pwent
race:pwentbuf locale
|
| setpwent(), endpwent() | Thread safety |
MT-Unsafe race:pwent locale
|
In the above table, pwent in race:pwent signifies that if any of the functions setpwent(), getpwent(), or endpwent() are used in parallel in different threads of a program, then data races could occur.