2016-10-26 2 views
1

나는 documentation for getopt()을 읽었지만 optarg의 설명을 찾지 못했습니다.getopt()의 optarg 변수

optarg에 대한 일반 정보를 명시 적으로 명확하게 설명하는 다른 출처를 찾을 수 없습니다.

누구든지 optarg에 대한 일반 정보를 명확히하고 자세히 설명해 주시면 감사하겠습니다.

내가 알고 싶습니다 : optarg

  • 무엇입니까.
  • 어떻게 optarg이 값을 얻습니다.
  • 설명서에는 optarg 값을 변경하는 콜론에 대해 언급되어 있습니다.

설명서에는 optarg을 사용하는 방법에 대한 예제가 있습니다. 나는 변수 자체에 대한보다 명확하고 정교한 설명에 더 많은 관심을 가지고있다. man page 말한다

+0

그 맨 페이지로 돌아가서 _ "optstring은 합법적 인 옵션 문자를 포함하는 문자열입니다. 이러한 문자 뒤에 콜론이 오는 경우 옵션에 인수가 필요하므로 getopt()는 optarg에있는 같은 argv-element의 다음 텍스트 또는 다음 argv-element의 텍스트."_ -.?. 그것은에 싱크 때까지 또 다시 읽을 – paddy

+0

을 기분 나쁘게, 비슷한 질문을 그것을 그냥 어제 –

+0

@SouravGhosh 예 그것이 OK –

답변

2

(강조 광산)을 optstring이

는 합법적 인 옵션 문자를 포함하는 문자열입니다. 이러한 문자 뒤에 콜론이 오는 경우 옵션에 인수가 필요하므로 getopt()을 다음 argv 요소에있는 다음 텍스트의 포인터 또는 다음 argv 요소의 텍스트를 optarg에 위치시킵니다. 두 개의 콜론은 옵션이 선택적 arg를 취한다는 것을 의미합니다. 현재 argv 요소 (예 : "-oarg"와 같은 옵션 이름 자체와 동일한 단어)에 텍스트가 있으면 optarg에 반환되고 그렇지 않으면 optarg가 0으로 설정됩니다. [...]

아래 코드는 사용법을 보여줍니다.

while ((opt = getopt(argc, argv, "nt:")) != -1) { 
    switch (opt) { 
    case 'n': 
     flags = 1; 
     break; 
    case 't': 
     nsecs = atoi(optarg); 
     tfnd = 1; 
     break; 
    default: /* '?' */ 
     fprintf(stderr, "Usage: %s [-t nsecs] [-n] name\n", 
       argv[0]); 
     exit(EXIT_FAILURE); 
    } 
} 

우리가 옵션 n가에 다음 인수를해야합니다 어떤 주장하지만, 옵션 t을 필요로하지 않는다는 것을 이해할 수있는 구문 "nt:"를 확인하여, 정교합니다. 따라서 옵션 t이 발견되면 해당 인수는 optarg에 저장되고 optarg에 액세스하여 검색 할 수 있습니다.

그래서, 기본적으로, getopt()옵션을 반환하고있는 경우 optarg는 해당 옵션에 대한 공급 인수를 반환합니다. getopt() 반환 t, optarg30를 포함하는 문자열 (아닌 int, 마음을)에 대한 포인터를 개최합니다 때

는 경우 바이너리는, ./a.out -t 30처럼 실행됩니다.

+1

는 알 겠어요. 감사합니다. –