ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>putpwent(3)
![]()
Tweet
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À» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|