GNU
2013-06-21
Aliases: endpwent(3), endpwent(3), endpwent(3), endpwent(3), endpwent(3), endpwent(3), endpwent(3), endpwent(3), endpwent(3), endpwent(3), endpwent(3), endpwent(3), setpwent(3), setpwent(3), setpwent(3), setpwent(3), setpwent(3), setpwent(3), setpwent(3), setpwent(3), setpwent(3), setpwent(3), setpwent(3), setpwent(3)
manpages-ja-dev
Japanese version of the manual pages (for developers)
man-pages-ja
Japanese man (manual) pages from the Japanese Manual Project
manpages-dev
Manual pages about using GNU/Linux for development
man-pages
Linux kernel and C library user-space interface documentation
名前
getpwent, setpwent, endpwent - パスワードファイルのエントリーの取得
書式
#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():
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
説明
getpwent() 関数は、パスワードデータベースから取得したエントリーを 要素毎に分解し、各要素を格納した構造体へのポインターを返す (パスワードデータベースの例: ローカルのパスワードファイル /etc/passwd, NIS, LDAP)。 getpwent() は、最初に呼び出された時は最初のエントリーを返し、それ以降は 呼び出される毎に次のエントリーを返す。
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() 関数は passwd 構造体へのポインターを返す。 これ以上エントリーが無いか、エラーが発生した場合は NULL を返す。 エラーが発生すると、 errno が適切に設定される。 この関数の呼び出し後に errno をチェックしたい場合は、呼び出し前に errno を 0 に設定しておかないといけない。
返り値は静的な領域を指しており、その後の getpwent(), getpwnam(3), getpwuid(3) の呼び出しで上書きされるかもしれない。 (返されたポインターを free(3) に渡さないこと。)
エラー
EINTR | シグナルが捕捉された。 |
EIO | I/O エラー。 |
EMFILE | 呼び出し元プロセスがオープンしているファイル数が すでに上限 (OPEN_MAX) であった。 |
ENFILE | システムでオープンされているファイル数がすでに上限であった。 |
ENOMEM | passwd 構造体に割り当てるメモリーが十分なかった。 |
ERANGE | 与えられたバッファー空間が不十分である。 |
ファイル
/etc/passwd | |
ローカルのパスワードデータベースファイル |
属性
マルチスレッディング (pthreads(7) 参照)
getpwent() 関数はスレッドセーフではない。
関数 setpwent() と endpwent() はスレッドセーフである。
準拠
SVr4, 4.3BSD, POSIX.1-2001. pw_gecos フィールドは POSIX では規定されていないが、 ほとんどの実装に存在する。
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
REFERENCED BY
fgetpwent(3), getpw(3), getpwent_r(3), getpwnam(3), getspnam(3), putpwent(3), setaliasent(3), getent(1), nss(5), nsswitch.conf(5), hlfsd(8), gentoo(1), gentoo(1x), lcmaps_posix_enf.mod(8), ftpd(8), shadow(3), , mh-alias(5mh), mh-alias(5), pmcd(1), pmdapipe(1), xscreensaver(1), passwd(5), xs(1), crypt_gensalt(3), crypt_rn(3), crypt(5)