getpwent_r

Autres langues

Langue: ja

Version: 2003-11-15 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

̾Á°

getpwent_r, fgetpwent_r - ¥Ñ¥¹¥ï¡¼¥É¥Õ¥¡¥¤¥ë¤Î¥¨¥ó¥È¥ê¤ò¥ê¥¨¥ó¥È¥é¥ó¥È (reentrant) ¤Ë¼è¤ê½Ð¤¹

½ñ¼°


#define _GNU_SOURCE


#include <pwd.h> int getpwent_r(struct passwd *pwbuf, char *buf,
size_t buflen, struct passwd **pwbufp); int fgetpwent_r(FILE *fp, struct passwd *pwbuf, char *buf,
size_t buflen, struct passwd **pwbufp);
 

ÀâÌÀ

´Ø¿ô getpwent_r() ¤È fgetpwent_r() ¤Ï getpwent(3) ¤È fgetpwent(3) ¤Î¥ê¥¨¥ó¥È¥é¥ó¥ÈÈǤǤ¢¤ë¡£ Á°¼Ô¤Ï¡¢ setpwent(3) ¤Ë¤è¤Ã¤Æ½é´ü²½¤µ¤ì¤¿¥¹¥È¥ê¡¼¥à¤«¤é¡¢¼¡¤Î¥Ñ¥¹¥ï¡¼¥É¥¨¥ó¥È¥ê¤òÆɤ߹þ¤à¡£ ¸å¼Ô¤Ï¡¢°ú¤­¿ô fp ¤È¤·¤ÆÍ¿¤¨¤é¤ì¤¿¥¹¥È¥ê¡¼¥à¤«¤é¡¢¼¡¤Î¥Ñ¥¹¥ï¡¼¥É¥¨¥ó¥È¥ê¤òÆɤ߹þ¤à¡£

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

};

¥ê¥¨¥ó¥È¥é¥ó¥È¤Ç¤Ê¤¤´Ø¿ô¤ÏÀÅŪ¤Ê³ÊǼÎΰè¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£ ¤³¤ÎÀÅŪ¤Ê³ÊǼÎΰè¤Ë¤Ï¡¢¹¹¤Ë¥æ¡¼¥¶Ì¾¡¦¥Ñ¥¹¥ï¡¼¥É¡¦gecos ¥Õ¥£¡¼¥ë¥É¡¦ ¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê¡¦¥·¥§¥ë¤Ø¤Î¥Ý¥¤¥ó¥¿¤¬´Þ¤Þ¤ì¤ë¡£ ¤³¤³¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¥ê¥¨¥ó¥È¥é¥ó¥È¤Ê´Ø¿ô¤Ï¡¢ ¸Æ¤Ó½Ð¤·Â¦¤«¤éÄ󶡤µ¤ì¤ë¥Ð¥Ã¥Õ¥¡¤Ë¥æ¡¼¥¶Ì¾¤Ê¤ÉÁ´¤Æ¤òÊÖ¤¹¡£ ºÇ½é¤Î°ú¤­¿ô¤È¤·¤Æ struct passwd ¤òÊÝ»ý¤Ç¤­¤ë¥Ð¥Ã¥Õ¥¡ pwbuf ¤¬¤¢¤ë¡£ ¼¡¤Ë¤½¤Î¾¤Îʸ»úÎó¤òÊÝ»ý¤Ç¤­¤ë¥µ¥¤¥º buflen ¤Î¥Ð¥Ã¥Õ¥¡ buf ¤¬¤¢¤ë¡£ ¤³¤ì¤é¤Î´Ø¿ô¤Î·ë²Ì (¥¹¥È¥ê¡¼¥à¤«¤éÆɤ߹þ¤Þ¤ì¤¿ struct passwd) ¤Ï¡¢ Ä󶡤µ¤ì¤¿¥Ð¥Ã¥Õ¥¡ *pwbuf ¤Ë³ÊǼ¤µ¤ì¡¢¤³¤Î struct passwd ¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ï *pwbufp ¤ËÊÖ¤µ¤ì¤ë¡£

ÊÖ¤êÃÍ

À®¸ù¤·¤¿¾ì¹ç¡¢¤³¤ì¤é¤Î´Ø¿ô¤Ï 0 ¤òÊÖ¤·¡¢ *pwbufp ¤Ï struct passwd ¤Ø¤Î¥Ý¥¤¥ó¥¿¤È¤Ê¤ë¡£ ¥¨¥é¡¼¤Î¾ì¹ç¡¢¤³¤ì¤é¤Î´Ø¿ô¤Ï¥¨¥é¡¼ÃͤòÊÖ¤·¡¢ *pwbufp ¤Ï NULL ¤Ë¤Ê¤ë¡£

¥¨¥é¡¼

ENOENT
¼¡¤Î¥¨¥ó¥È¥ê¤¬¤Ê¤¤¡£
ERANGE
½½Ê¬¤Ê¥Ð¥Ã¥Õ¥¡¶õ´Ö¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤Ê¤¤¡£ ¤â¤Ã¤ÈÂ礭¤Ê¥Ð¥Ã¥Õ¥¡¤ÇºÆÅټ¹Ԥ¹¤ë¤³¤È¡£

½àµò

¤³¤ì¤é¤Î´Ø¿ô¤Ï GNU ³ÈÄ¥¤Ç¤¢¤ê¡¢POSIX ÈǤδؿô getpwnam_r(3) ¤Î·Á¼°¤Ë»÷¤»¤Æ¤¢¤ë¡£ ¾¤Î¥·¥¹¥Æ¥à¤Ç¤Ï°Ê²¼¤Î¥×¥í¥È¥¿¥¤¥×¤¬»È¤ï¤ì¤Æ¤¤¤ë¡£

struct passwd *

getpwent_r(struct passwd *pwd, char *buf, int buflen);

¤è¤êÎɤ¤¤â¤Î¤Ç¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£


int

getpwent_r(struct passwd *pwd, char *buf, int buflen,

           FILE **pw_fp);

Ãí°Õ

´Ø¿ô getpwent_r() ¤ÏËÜÅö¤Î¥ê¥¨¥ó¥È¥é¥ó¥È¤Ç¤Ï¤Ê¤¤¡£ ¤Ê¤¼¤Ê¤é¡¢¥¹¥È¥ê¡¼¥à¤ÎÆɤ߹þ¤ß°ÌÃÖ¤ò ¾¤ÎÁ´¤Æ¤Î¥¹¥ì¥Ã¥É¤È¶¦Í­¤·¤Æ¤¤¤ë¤¿¤á¤Ç¤¢¤ë¡£

Îã


#define _GNU_SOURCE

#include <pwd.h>

#include <stdio.h>

#define BUFLEN 4096



+int

+main(void)

{

    struct passwd pw, *pwp;

    char buf[BUFLEN];

    int i;



    setpwent();

    while (1) {

        i = getpwent_r(&pw, buf, BUFLEN, &pwp);

        if (i)

            break;

        printf("%s (%d)\tHOME %s\tSHELL %s\n", pwp->pw_name,

               pwp->pw_uid, pwp->pw_dir, pwp->pw_shell);

    }

    endpwent();

    exit(EXIT_SUCCESS);

}

´ØÏ¢¹àÌÜ

fgetpwent(3), getpw(3), getpwent(3), getpwnam(3), getpwuid(3), putpwent(3), passwd(5), feature_test_macros(7)