티스토리 뷰


- c getopt

1. getopt
getopt() 는 입력라인의 인자(arguments)를 분석한다. 프로그램 실행에 의해 main()함 수에서 넘겨진 argc와 argv는 인자의 수와 배열을 나타낸다. 
'-' 또는 '--'를 정확히 구분을 하지않지만 '-'으로 시작되는 argv의 요소가 옵션 요소(option element)가 된다. '-'으로 시작하여 뒤에 있는 문자는 옵션문자(option characters)가 된다.
 getopt() 를 반복적으로 호출하게 되면 각각의 옵션인자(option element)에서 각각의 옵션 문자(option characters)들이 성공적으로 반환된다.

[프로토타입]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <unistd.h>
 
int getopt(int argc, char * const argv[],
    const char *optstring);
 
extern char *optarg;
extern int optind, opterr, optopt;
 
#include <getopt.h>
 
int getopt_long(int argc, char * const argv[],
           const char *optstring,
           const struct option *longopts, int *longindex);
 
int getopt_long_only(int argc, char * const argv[],
           const char *optstring,
           const struct option *longopts, int *longindex);
cs

 

[예시]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    while ((c = getopt(argc, argv, "diosa")) != -1) {
        switch (c) {
            case 'd':
                d_mod = 1/* debug mod on :입출력내용을 Print한다. */
                printf("Info: Option   -d  : TCache 입.출력구조체 출력 (TCache_name Debug mode) \n");
                break;
            case 'i':
                g_mod = 1/* pfmTCacheInvalidate By TCache Key */
                printf("Info: Option   -i  : TCache 1건 삭제 (Invalidate one contents in TCache_name) \n");
                break;
            case 'o':
                g_mod = 2/* Table 내용 Print By Table Key */
                printf("Info: Option   -o  : TCache 1건 등록 (Load one contents in TCache_name) \n");
                break;
            case 's':
                g_mod = 3/* pfmTCacheGet : TCache의 내용 Print By TCache Key */
                printf("Info: Option   -s  : TCache 1건 조회 (Get one contents in TCache_name) \n");
                break;
            case 'a':
                g_mod = 4/* pfmTCachePut : Table을 읽어서 TCache에 Put */
                printf("Info: Option   -a  : TCache 일괄 등록 (Load All contents in TCache_name) \n");
                break;
            default:
                print_usage();
                return RC_ERR;
        }
    }
cs

 



- 리눅스 getopt

pfm5c_nh@PSDEV:/home/pfm5c_nh/proframe5.0/package/proframe/pfm/inc] man -k getopt
getopt (1)           - 명령행 옵션 분석
getopts (1)          - bash built-in 명령어들, bash(1)를 참고하라.
getopt (3)           - Parse command-line options
getopt_long (3)      - Parse command-line options
getopt_long_only (3) - Parse command-line options
getopt (3p)          - command option parsing
Getopt::Std (3pm)    - Process single-character switches with switch clustering
Getopt::Long (3pm)   - Extended processing of command line options
getopts (1p)         - parse utility options
Pod::Perldoc::GetOptsOO (3pm) - Customized option parser for Pod::Perldoc

GETOPT(1)                                                                                   BSD General Commands Manual                                                                                  GETOPT(1)

NAME
     getopt -- 명령행 옵션 분석

SYNOPSIS
     set -- `getopt optstring $*`

DESCRIPTION
     Getopt 풀그림은 쉘 스크립트 파일안에서 그 쉘 스크립트의 명령행 옵션을 처리하고자 할 때 그것을 쉽게 처리할 수 있도록 하는데 사용된다.  optstring은 그 쉘 스크립트의 명령행 옵션들이다 ( getopt(3) 참조).
     이때, 콜론(:)이 오면, 그 앞에 있는 옵션은 그 옵션에 대한 공백문자가 있거나 공백문자로 구분하는 인자를 가지는 옵션으로 간주한다(아래 예제 참조).  특수하게, 옵션은 해당 스크립트 자체에 대한 옵션은 끝이
     났음을 알리는 옵션이다.
     Getopt 풀그림은 다음에 오는 내용들은 그 스크립트의 옵션으로 간주하지 않고, 스크립트의 명령행 인자($1 $2 ...)로 간주해서 필요하다면, 그 인자에서 사용되는 옵션으로 처리할 수도 있다.
     이해를 쉽게 하기 위해 아래 예제를 살펴 보자.


 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31