docbook chapter Template
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>putpwent(3)



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
HTML º¯È¯¹®¼­
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> 
<chapter lang=ko> 
<!-- ÀÛ¼ºÀÚ : yundream             --> 
<!-- ÀÛ¼ºÀÏ : 2004/01/03           --> 
<!-- ¿¬¶ôó : dreamyun@yahoo.co.kr --> 
 
<!-- ÇÔ¼ö À̸§À» ÀÔ·ÂÇÕ´Ï´Ù --> 
<title>putpwent</title> 
 
<!-- ÀÌ°Ç ÇÔ¼ö¿¡ ´ëÇÑ ´ë·«ÀûÀÎ ¼³¸íÀ̱¸¿ä --> 
<para> 
    À¯Àú ÆÐ½º¿öµå Á¤º¸¸¦ ÆÄÀÏ¿¡ ¾´´Ù.   
</para> 
  
<!-- ¿©±â¿¡ ÇÔ¼öÀÇ °£´ÜÇÑ »ç¿ë¹ýÀÌ µé¾î°©´Ï´Ù --> 
<section> 
    <title>»ç¿ë¹ý</title> 
    <para> 
        <screen> 
#include <pwd.h> 
#include <stdio.h> 
#include <sys/types.h> 
 
int putpwent(const struct passwd *p, FILE *stream); 
        </screen> 
    </para> 
</section> 
 
<!-- ¿©±â¿£ ÇÔ¼öÀÇ ÀÚ¼¼ÇÑ ¼³¸í ÀÌ µé¾î°©´Ï´Ù --> 
<section> 
    <title>¼³¸í</title> 
    <para> 
        putpwent()ÇÔ¼ö´Â <emphasis>stream</emphasis>¿¡ ¿¬°áµÈ ÆÄÀÏ¿¡ 
        ÆÐ½º¿öµå ±¸Á¶Ã¼ Á¤º¸<emphasis>p</emphasis>¸¦ ÀÌ¿ëÇØ¼­ ÆÐ½º¿öµå³»¿ëÀ»  
        Ãß°¡ÇÑ´Ù.  
    </para> 
    <para> 
        passwd±¸Á¶Ã¼´Â <pwd.h>¿¡ ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù. 
        <screen> 
struct passwd { 
        char    *pw_name;       /* user name */ 
        char    *pw_passwd;     /* user password */ 
        uid_t   pw_uid;         /* user id */ 
        gid_t   pw_gid;         /* group id */ 
        char    *pw_gecos;      /* real name */ 
        char    *pw_dir;        /* home directory */ 
        char    *pw_shell;      /* shell program */ 
}; 
        </screen> 
    </para> 
</section> 
 
<!-- ÇÔ¼ö°¡ µÇµ¹·ÁÁÖ´Â °ªÀ̱¸¿ä --> 
<section> 
    <title>¹Ýȯ°ª</title> 
    <para> 
        ¼º°øÇÒ°æ¿ì 0À» ½ÇÆÐÇßÀ»°æ¿ì¿¡´Â -1À» ¹ÝȯÇϸç, Àû´çÇÑ errno °ªÀ»  
        ¼³Á¤ÇÑ´Ù.  
    </para> 
</section> 
 
<!-- ¿¡·¯°¡ ¹ß»ýÇßÀ»¶§ µÇµ¹·ÁÁÖ´Â °ªµéÀÔ´Ï´Ù --> 
<section> 
    <title>¿¡·¯</title> 
    <para> 
        <variablelist>     
            <varlistentry> 
            <term>EINVAL</term>     
            <listitem> 
                <para>     
                    À߸øµÈ °ªÀÌ ÀÎÀÚ·Î »ç¿ëµÇ¾ú´Ù.     
                </para>     
            </listitem> 
            </varlistentry> 
        </variablelist>     
    </para> 
</section> 
 
<!-- ¸¶Áö¸·À¸·Î ¿¡Á¦ ÀÔ´Ï´Ù                                                 --> 
<!-- ¿©±â¿¡´Â ¿ÏÀüÇÑ ¿¹Á¦°¡ µé¾î°¡ Àִµ¥, ±»ÀÌ ¿ÏÀüÇÑ ¿¹Á¦¸¦ ¸¸µéÇÊ¿ä ¾øÀÌ --> 
<!-- ÄÚµå ÀϺκи¸ ÀÛ¼ºÇؼ­ ¿Ã·ÁÁּŵµ µË´Ï´Ù                               -->  
<!-- "<", ">", "&" µîÀº º¯È¯ÇØ ÁÖ¼Å¾ß Çϴµ¥, ±ÍÂúÀ¸½Ã¸é :-) º¯È¯ ÇÏÁö ¾Ê   --> 
<!-- ¾Æµµ µË´Ï´Ù. Á¦°¡ °Ë»ç ÇØ¼­ ¿Ã¸®°Ú½À´Ï´Ù                               --> 
<!-- ¿¹Á¦¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀ» Àû¾îÁּŵµ µÇ±¸¿ä                            --> 
<section> 
    <title>¿¹Á¦</title> 
    <para> 
        <screen> 
#include <pwd.h> 
#include <unistd.h> 
#include <stdio.h> 
 
#define USER_DEFAULT_DIR "/home/%s" 
#define USER_DEFAULT_SHELL "/bin/sh" 
void help() 
{ 
    fprintf(stderr, "Usage: useradd2 [username] -d usr_dir -s usr_shell\n"); 
} 
 
int main(int argc, char **argv) 
{ 
    int opt; 
    struct passwd lpass;  
    char user_dir[80]; 
    char user_name[32]; 
    FILE *pwfp; 
 
    memset((void *)&lpass, 0x00, sizeof(lpass)); 
    while((opt = getopt(argc, argv, "s:d:h")) != -1) 
    { 
        switch(opt) 
        { 
            case 's': 
                lpass.pw_shell = optarg;  
                break; 
            case 'd':     
                lpass.pw_dir = optarg;  
                break; 
            case 'h': 
                help(); 
                exit(0); 
                break; 
            case '?':  
                help(); 
                break; 
        } 
    } 
 
    if (optind > argc)     
    { 
        snprintf(user_name, 32, "%s", argv[optind]); 
        lpass.pw_name = user_name; 
    } 
    else 
    { 
        help(); 
        exit(1); 
    } 
 
    if(!lpass.pw_dir) 
    { 
        sprintf(user_dir, USER_DEFAULT_DIR, user_name); 
        lpass.pw_dir = user_dir; 
    } 
    if(!lpass.pw_shell) 
    { 
        lpass.pw_shell = USER_DEFAULT_SHELL; 
    }      
    printf("User id    : %s\n", lpass.pw_name); 
    printf("User shell : %s\n", lpass.pw_shell); 
    printf("User dir   : %s\n", lpass.pw_dir); 
 
    pwfp = fopen("/etc/passwd", "a"); 
    putpwent(&lpass, pwfp); 
    fclose(pwfp); 
} 
        </screen> 
        fopen()À» ÅëÇÏ¿© ÆÄÀÏÀ» ¿­¶§ "w"·Î ¿­Áö ¾Êµµ·Ï ÁÖÀÇÇØ¾ß ÇÑ´Ù. ±×·² °æ¿ì ±âÁ¸ ÆÄÀÏÀÇ  
        ³»¿ëÀ» ¸ðµÎ ÀÒ¾î¹ö¸®°Ô µÈ´Ù.   
    </para> 
    <para> 
        ±×¸®°í À§ÀÇ ÇÁ·Î±×·¥Àº ÀÛµ¿¹æ½Ä¸¸À» ¼³¸íÇÏ´Â ¼öÁØÀÇ ÇÁ·Î±×·¥ÀÌ´Ù. Á¦´ë·Î ÀÛµ¿Çϵµ·Ï  
        ¸¸µé·Á¸é getpwent(3)µîÀÇ ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ ÆÐ½º¿öµå ¸ñ·ÏÀ» °¡Á®¿À°í Áߺ¹µÈ À̸§ÀÌ ÀÖ´ÂÁö  
        È®ÀÎÇϰí, uid¿Í gid¸¦ °áÁ¤ÇÏ´Â µîÀÇ ·çƾÀÌ Æ÷ÇԵǾî¾ß ÇÑ´Ù. putpwent()ÇÔ¼ö´Â uid¿Í gid¸¦  
        °áÁ¤ÇØ ÁÖÁö ¾Ê±â ¶§¹®ÀÌ´Ù. 
    </para> 
</section> 
<section> 
    <title>Âü°í¹®Çå</title> 
    <para> 
        <orderedlist> 
            <listitem> 
                <para> 
                    <ulink url="http://www.joinc.co.kr/modules.php?name=News&file=article&sid=9">getopt(3)¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¥ ÀÎÀÚó¸®</ulink> 
                </para> 
            </listitem> 
        </orderedlist> 
    </para> 
</section> 
</chapter> 
 
 

º¯°æ»çÇ×

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.