getpwnam

Autres langues

Langue: ja

Version: 1996-05-27 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

̾Á°

getpwnam, getpwnam_r, getpwuid, getpwuid_r - ¥Ñ¥¹¥ï¡¼¥É¥Õ¥¡¥¤¥ë¤Î¥¨¥ó¥È¥ê¤Î¼èÆÀ

½ñ¼°


#include <sys/types.h>

#include <pwd.h>



struct passwd *getpwnam(const char *name);



struct passwd *getpwuid(uid_t uid);



int getpwnam_r(const char *name, struct passwd *pwbuf,


char *buf, size_t buflen, struct passwd **pwbufp); int getpwuid_r(uid_t uid, struct passwd *pwbuf,
char *buf, size_t buflen, struct passwd **pwbufp);

ÀâÌÀ

getpwnam() ´Ø¿ô¤Ï¡¢¥æ¡¼¥¶Ì¾ name ¤Ë¥Þ¥Ã¥Á¤¹¤ë¥Ñ¥¹¥ï¡¼¥É¡¦¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥¨¥ó¥È¥ê¤ò Í×ÁÇËè¤Ëʬ²ò¤·¡¢³ÆÍ×ÁǤò³ÊǼ¤·¤¿¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤òÊÖ¤¹ (¥Ñ¥¹¥ï¡¼¥É¡¦¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎÎã: ¥í¡¼¥«¥ë¤Î¥Ñ¥¹¥ï¡¼¥É¥Õ¥¡¥¤¥ë /etc/passwd, NIS, LDAP)¡£

getpwuid() ´Ø¿ô¤Ï¡¢¥æ¡¼¥¶ ID uid ¤Ë¥Þ¥Ã¥Á¤¹¤ë¥Ñ¥¹¥ï¡¼¥É¡¦¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥¨¥ó¥È¥ê¤ò Í×ÁÇËè¤Ëʬ²ò¤·¡¢³ÆÍ×ÁǤò³ÊǼ¤·¤¿¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤òÊÖ¤¹¡£

getpwnam_r() ¤È getpwuid_r() ´Ø¿ô¤Ï (¾åµ­¤Î´Ø¿ô¤È) Ʊ¤¸¾ðÊó¤ò¼èÆÀ¤¹¤ë¤¬¡¢ ¼èÆÀ¤·¤¿ passwd ¹½Â¤ÂΤò pwbuf ¤¬»Ø¤¹Îΰè¤Ë³ÊǼ¤¹¤ë¡£ ¤³¤Î passwd ¹½Â¤ÂΤˤÏʸ»úÎó¤Ø¤Î¥Ý¥¤¥ó¥¿¤¬´Þ¤Þ¤ì¡¢ ¤³¤ì¤é¤Îʸ»úÎó¤Ï¥µ¥¤¥º buflen ¤Î¥Ð¥Ã¥Õ¥¡ buf ¤Ë³ÊǼ¤µ¤ì¤ë¡£ À®¸ù¤·¤¿¾ì¹ç *pwbufp ¤Ë¤Ï·ë²Ì¤Ø¤Î¥Ý¥¤¥ó¥¿¤¬³ÊǼ¤µ¤ì¤ë¡£ ¥¨¥ó¥È¥ê¤¬¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¤ä¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ë¤Ï *pwbufp ¤Ë¤Ï NULL ¤¬Æþ¤ë¡£

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;      /* ¥·¥§¥ë¥×¥í¥°¥é¥à */

};

buf ¤ËºÇÂçɬÍפʥµ¥¤¥º¤Ï¡¢ sysconf(3) ¤Ë°ú¤­¿ô _SC_GETPW_R_SIZE_MAX ¤ò»ØÄꤷ¤Æ¼Â¹Ô¤¹¤ë¤³¤È¤Çʬ¤«¤ë¡£

ÊÖ¤êÃÍ

getpwnam() ¤È getpwuid() ´Ø¿ô¤Ï¡¢ passwd ¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤òÊÖ¤¹¡£ °ìÃפ¹¤ë¥¨¥ó¥È¥ê¤¬¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¤ä¡¢¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ï NULL ¤òÊÖ¤¹¡£ ¥¨¥é¡¼¤¬µ¯¤³¤Ã¤¿¾ì¹ç¡¢ errno ¤¬Å¬ÀÚ¤ËÀßÄꤵ¤ì¤ë¡£ ¸Æ¤Ó½Ð¤·¤Î¸å¤Ç errno ¤ò¥Á¥§¥Ã¥¯¤·¤¿¤¤¾ì¹ç¤Ï¡¢ ¸Æ¤Ó½Ð¤·¤ÎÁ°¤Ë (¤³¤ÎÃͤò) 0 ¤ËÀßÄꤷ¤Æ¤ª¤¯¤Ù¤­¤Ç¤¢¤ë¡£

ÊÖ¤êÃͤÏÀÅŪ¤ÊÎΰè¤ò»Ø¤·¤Æ¤ª¤ê¡¢¤½¤Î¸å¤Î getpwent(3), getpwnam(), getpwuid() ¤Î¸Æ¤Ó½Ð¤·¤Ç¾å½ñ¤­¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£

getpwnam_r() ¤È getpwuid_r() ´Ø¿ô¤Ï¡¢ À®¸ù¤·¤¿¾ì¹ç¤Ë 0 ¤òÊÖ¤¹¡£ ¥¨¥é¡¼¤Î¾ì¹ç¤Ï¡¢¥¨¥é¡¼Èֹ椬ÊÖ¤µ¤ì¤ë¡£

¥¨¥é¡¼

0 ¤Þ¤¿¤Ï ENOENT ¤Þ¤¿¤Ï ESRCH ¤Þ¤¿¤Ï EBADF ¤Þ¤¿¤Ï EPERM ¤Þ¤¿¤Ï ...
»ØÄꤵ¤ì¤¿ name ¤Þ¤¿¤Ï uid ¤¬¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¡£
EINTR
¥·¥°¥Ê¥ë¤¬¥­¥ã¥Ã¥Á¤µ¤ì¤¿¡£
EIO
I/O ¥¨¥é¡¼¡£
EMFILE
¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Ë¤ª¤¤¤Æ¡¢ ´û¤ËºÇÂç¿ô (OPEN_MAX) ¤Î¥Õ¥¡¥¤¥ë¤¬¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤ë¡£
ENFILE
¥·¥¹¥Æ¥à¾å¤Ç´û¤ËºÇÂç¿ô¤Î¥Õ¥¡¥¤¥ë¤¬¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤ë¡£
ENOMEM
passwd ¹½Â¤ÂΤò³ä¤êÅö¤Æ¤ë¤¿¤á¤Î¥á¥â¥ê¤¬ÉÔ½½Ê¬¡£
ERANGE
Í¿¤¨¤é¤ì¤¿¥Ð¥Ã¥Õ¥¡¶õ´Ö¤¬ÉÔ½½Ê¬¤Ç¤¢¤ë¡£

¥Õ¥¡¥¤¥ë

/etc/passwd
¥í¡¼¥«¥ë¤Î¥Ñ¥¹¥ï¡¼¥É¡¦¥Ç¡¼¥¿¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë

½àµò

SVr4, 4.3BSD, POSIX.1-2001

Ãí°Õ

¾åµ­¤Î¡ÖÊÖ¤êÃ͡װʲ¼¤Îµ­½Ò¤Ï POSIX.1-2001 ¤Ëµò¤ë¡£ ¤³¤Îɸ½à¤Ï¡Ö(¥¨¥ó¥È¥ê¤¬) ¸«¤Ä¤«¤é¤Ê¤¤¤³¤È¡×¤ò¥¨¥é¡¼¤È¤·¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢ ¤½¤Î¤è¤¦¤Ê¾ì¹ç¤Ë errno ¤¬¤É¤Î¤è¤¦¤ÊÃͤˤʤ뤫¤òÄê¤á¤Æ¤¤¤Ê¤¤¡£ ¤½¤Î¤¿¤á¡¢¥¨¥é¡¼¤òǧ¼±¤¹¤ë¤³¤È¤ÏÉÔ²Äǽ¤Ç¤¢¤ë¡£ POSIX ¤Ë½àµò¤·¤Æ¡¢¥¨¥ó¥È¥ê¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¤Ï errno ¤òÊѹ¹¤·¤Ê¤¤¤è¤¦¤Ë¤¹¤Ù¤­¤Ç¤¢¤ë¡¢¤È¼çÄ¥¤¹¤ë¿Í¤â¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ ÍÍ¡¹¤Ê Unix ·Ï¤Î¥·¥¹¥Æ¥à¤Ç»î¤·¤Æ¤ß¤ë¤È¡¢¤½¤Î¤è¤¦¤Ê¾ì¹ç¤Ë¤Ï 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM ¤È¤¤¤Ã¤¿ÍÍ¡¹¤ÊÃͤ¬ÊÖ¤µ¤ì¤ë¡£ ¾¤ÎÃͤ¬ÊÖ¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£

¥Õ¥£¡¼¥ë¥É pw_dir ¤Ë¤Ï¡¢¥æ¡¼¥¶¤Îºî¶È¥Ç¥£¥ì¥¯¥È¥ê̾¤Î½é´üÃͤ¬³ÊǼ¤µ¤ì¤ë¡£ ¥í¥°¥¤¥ó¥×¥í¥»¥¹¤Ï¡¢¤³¤Î¥Õ¥£¡¼¥ë¥É¤ÎÃͤò»È¤Ã¤Æ¡¢ ¥í¥°¥¤¥ó¥·¥§¥ë¤Î HOME ´Ä¶­ÊÑ¿ô¤ò½é´ü²½¤¹¤ë¡£ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬¡¢¥æ¡¼¥¶¤Î¥Û¡¼¥à¡¦¥Ç¥£¥ì¥¯¥È¥ê¤ò·èÄꤹ¤ë¾ì¹ç¤Ë¤Ï¡¢ (getpwuid(getuid())->pw_dir ¤ÎÃͤǤϤʤ¯) HOME ¤ÎÃͤò¸¡ºº¤¹¤ë¤è¤¦¤Ë¤¹¤Ù¤­¤Ç¤¢¤ë¡£ ¤Ê¤¼¤Ê¤é¡¢¤³¤Î¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ç¡¢¥æ¡¼¥¶¤¬¥í¥°¥¤¥ó¡¦¥»¥Ã¥·¥ç¥óÃæ¤Ç ¡Ö¥Û¡¼¥à¡¦¥Ç¥£¥ì¥¯¥È¥ê¡×¤Î°ÕÌ£¤òÊѹ¹¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¤«¤é¤Ç¤¢¤ë¡£ Ê̤Υ桼¥¶¤Î¥Û¡¼¥à¡¦¥Ç¥£¥ì¥¯¥È¥ê (¤Î½é´üÃÍ) ¤òÃΤë¤Ë¤Ï getpwnam(username)->pw_dir ¤«Æ±ÍͤÎÊýË¡¤ò»È¤¦É¬Íפ¬¤¢¤ë¡£

´ØÏ¢¹àÌÜ

endpwent(3), fgetpwent(3), getgrnam(3), getpw(3), getpwent(3), putpwent(3), setpwent(3), passwd(5)