ÇÁ·Î±×·¥ ½ÇÇà ÀÎÀÚ Ã³¸®Çϱâ
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.


Contents

1 È÷½ºÅ丮
2 getopt¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¥ ÀÎÀÚ Ã³¸®
3 getopt_long

1 È÷½ºÅ丮

  • 2010/3/25 wiki ½ºÅ¸ÀÏ·Î º¯È¯
  • getopt_longÇÔ¼öµµ ´Ù·çÀÚ.

2 getopt¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¥ ÀÎÀÚ Ã³¸®

¸ðµç C(C++)·Î µÈ ½î¾²´Â ¹Ýµå½Ã ÇϳªÀÇ main() ÇÔ¼ö¸¦ Æ÷ÇÔÇϸç, main ÇÔ¼ö´Â 2°³ÀÇ ÀÎÀÚ¸¦ °¡Áö°Ô µÈ´Ù. ÀϹÝÀûÀ¸·Î main() ÇÔ¼ö´Â ¾Æ·¡¿Í °°ÀÌ ¼±¾ðµÈ´Ù.
void main (int argc, char **argv)  
 

À§¿Í °°ÀÌ main ÇÔ¼ö¸¦ ¼±¾ðÇØ ³õÀ¸¸é ÇÁ·Î±×·¥ÀÌ ½ÃÀÛÇÒ¶§¸¶´Ù, ÇÁ·Î±×·¥ÀÇ ÀÎÀÚ¸¦ argc ¿Í argv ·Î ¹Þ¾ÆµéÀÌ°Ô µÈ´Ù. argc ´Â ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ¶§ ¹Þ¾ÆµéÀÎ ÀÎÀÚÀÇ °¹¼öÀ̸ç, argv ´Â ¹Þ¾ÆµéÀÎ ÀÎÀÚÀÇ ¹®ÀÚ¿­ ÁýÇÕÀÌ´Ù. ¾Æ·¡ÀÇ ¿¹¸¦ ½ÇÇàÇØº¸¸é ½±°Ô ÀÌÇØ°¡ °¡´ÉÇÒ°ÍÀÌ´Ù.
#include <stdlib.h> 
 
int main(int argc, char **argv) 
{ 
    int i; 
    printf("¾Æ±Ô¸ÕÆ®ÀÇ ¼ö´Â %d °³ÀÔ´Ï´Ù", argc); 
 
    for (i = 0; i < argc; i ++) 
    {  
        printf("%d ¹øÂ° ¾Æ±Ô¸ÕÆ® : %s", i, argv[i]); 
    }    
 
    return 0; 
}  
 
À§ÀÇ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ ÇØ¼­ ½ÇÇà½Ã۸é, ¾Æ±Ô¸ÕÆ®ÀÇ ¼ö¿Í °¢°¢ÀÇ ¾Æ±Ô¸ÕÆ®¸¦ µ¹·ÁÁÖ´Â°É º¼¼ö ÀÖÀ»°ÍÀÌ´Ù.
[yundream@localhost test]# ./argc hello myname  
¾Æ±Ô¸ÕÆ®ÀÇ ¼ö´Â 3 °³ÀÔ´Ï´Ù  
0 ¹øÂ° ¾Æ±Ô¸ÕÆ® : ./argc  
1 ¹øÂ° ¾Æ±Ô¸ÕÆ® : hello  
1 ¹øÂ° ¾Æ±Ô¸ÕÆ® : myname 
 

ºÐ¸íÈ÷ main() ÇÔ¼öÀÇ ¾Æ±Ô¸ÕÆ®·Î ³Ñ¾î¿À´Â argc ¿Í argv ¸¦ Ȱ¿ëÇØ¼­ ±âº»ÀûÀÎ ¾Æ±Ô¸ÕÆ® ÃæºÐÈ÷ ÇÒ¼ö ÀÖ±â´Â ÇÏÁö¸¸, º¹ÀâÇÑ ½ÇÇà ÀÎÀÚ¸¦ ó¸®Çϱ⿡´Â ÀûÇÕÇÏÁö ¾Ê´Ù.

¿ì¸®°¡ ¾ðÁ¦³ª »ç¿ëÇÏ´Â °¡Àå °£´ÜÇÑ ls Á¶Â÷µµ "ls -al" °ú °°Àº ¿É¼ÇÀ» Áö¿øÇÑ´Ù. ls -al ¿¡¼­ º¸µíÀÌ À̰ÍÀº ls -a -l ·Îµµ »ç¿ëµÉ¼öµµ ÀÖ°í, ls -l -a ·Îµµ »ç¿ëµÉ¼ö ÀÖ´Ù. À̰ÍÀ» ÇÁ·Î±×·¥³»¿¡¼­ »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ ó¸®ÇÏ·Á°í ÇÏ¸é º¸Åë ÀÏÀÌ ¾Æ´Ò°ÍÀÌ´Ù. ±×·¡¼­ À¯´Ð½º ¿¡¼­´Â ÀÌ·¯ÇÑ ¿É¼ÇÀ» ½±°Ô ó¸®ÇÒ¼ö ÀÌ¶Ç·Ï µµ¿ÍÁÖ´Â getopt(3) ÇÔ¼ö¸¦ Áö¿øÇÑ´Ù. À̹ø¿¡´Â getopt ¸¦ ÀÌ¿ëÇØ¼­ ´Ù¾çÇÑ ¿É¼ÇÀ» ó¸®ÇÏ´Â testopt ¶ó´Â ÇÁ·Î±×·¥À» ¸¸µé¾î º¸µµ·Ï ÇϰڴÙ. ÇÁ·Î±×·¥ À̸§Àº testopt.c·Î ÇϰڴÙ.

#include <unistd.h> 
#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <sys/stat.h> 
#include <fcntl.h> 
 
void help(); 
void version(); 
int main(int argc, char **argv) 
{  
    int opt; 
    int port_num; 
    int fp; 
    int opt_ok; 
    char file_name[16]; 
    char buf[256]; 
 
    while((opt = getopt(argc, argv, "hvf:")) != -1)  
    { 
        switch(opt)  
        {  
            case 'h': 
                help();  
                break;  
            case 'v': 
                version();   
                break; 
            case 'f': 
                memcpy(file_name, optarg, 16); 
                opt_ok = 1; 
                break; 
        } 
    }  
    if (opt_ok != 1) 
    {  
        help(); 
        exit(0); 
    }  
 
    if (access(file_name, R_OK) != 0) 
    { 
        printf("ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù"); 
        exit(0); 
    } 
    if((fp = open(file_name, O_RDONLY)) == -1) 
    { 
        printf("file open error"); 
        exit(0); 
    } 
 
    memset(buf, '0', 256); 
    while(read(fp, buf, 256) > 0) 
    { 
        printf("%s", buf); 
        memset(buf, '0', 256); 
    } 
} 
 
void help() 
{ 
    printf("Usage: ./testopt [OPTION] [FILE]" 
           "  -h                µµ¿ò¸»" 
           "  -f [FILE]         ÆÄÀÏÃâ·Â" 
           "  -v                ¹öÀüÃâ·Â"); 
    exit(0); 
} 
 
void version() 
{ 
    printf("Version : 1.01"); 
    exit(0); 
} 
 

¸Å¿ì °£´ÜÇϰí ÀÌÇØ°¡ ½¬¿î ¿¹Á¦ÀÌ´Ù. getopt ¸¦ ÀÌ¿ëÇØ¼­ ÇÁ·Î±×·¥ÀÇ ÀÎÀÚ¸¦ °Ë»ç ÇØ¼­ '-' °¡ ¾Õ¿¡ ºÙ¾î ÀÖ´Â ÀÎÀÚ´Â ¿É¼ÇÀ¸·Î °£ÁÖÇØ¼­ "hvf" Áß ¾î´À ¿É¼ÇÀÎÁö¸¦ °Ç»çÇØ¼­ ÇØ´ç ·çƾÀ» ½ÇÇà½ÃÄÑÁØ´Ù. ´Ü "f" ÀÇ °æ¿ì¿¡´Â ":" °¡ ºÙ¾î Àִµ¥, ÀÌ´Â "f" ¿É¼ÇÀº ¹Ýµå½Ã µÚ¿¡ °ªÀÌ µû¶ó¾ß ÇÔÀ» ¸í½ÃÇϰí ÀÖ´Ù. ¿©±â¿¡¼­ °ªÀ̶õ È­¸é¿¡ Ãâ·ÂÇϰíÇ ÆÄÀÏÀ̸§ÀÌ´Ù.
[yundream@localhost test]# ./testopt -h  
Usage: ./testopt [OPTION] [FILE] 
  -h                            µµ¿ò¸» 
  -f [FILE]                     ÆÄÀÏÃâ·Â 
  -v                            ¹öÀüÃâ·Â 
 [yundream@localhost test]# ./testopt -f 
./testopt: option requires an argument -- f 
Usage: ./testopt [OPTION] [FILE] 
  -h                            µµ¿ò¸» 
  -f [FILE]                     ÆÄÀÏÃâ·Â 
  -v                            ¹öÀüÃâ·Â 
 

3 getopt_long




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