명령줄 옵션
- 명령줄에 나열된 인수는 두 종류로 분류
- 하나는 명령이 처리할 대상인 데이터
- 다른 하나는 명령의 동작을 지정하는데에 이용
명령줄 문자열 예
ex) gcc list0612A.c -o list0612A
=> gcc(명령어) list0612A.c(처리 대상) -o(옵션) list0612A(옵션의 인수)
옵션 지정 예
- 보통 '-h'나 '-?', '--help', '--usage' 같은 옵션
=> 간단한 도움말이나 명령의 사용법을 표시하는데 이용
- '--version' 을 지정했을 때 버전 번호를 표시하게 구현하는 것이 일반적으로 약속처럼 되어 있음
옵션 해석 |
- 프로그램에서 옵션을 해석하는 법 - 명령줄 옵션을 해석할 때는 'getopt()'와 'getopt_long()'을 사용 - 이들 함수가 표준 C 라이브러리에 포함되므로 따로 패키지를 준비할 필요는 없음 => #include <unistd.h> |
짧은 옵션 |
-'-(하이픈)'에 이어서 영문자, 숫자, 기호 단일 자로 나타내는 옵션 형식 - gcc 옵션에서 '-c' 와 '-o'가 짧은 옵션에 해당함 - '-c' 옵션은 그 자제로 완결돼 인수가 필요하지 않음 - 생성할 실행 파일의 이름을 지정하는 '-o' 옵션은 입수가 필요함 - 옵션의 인수는 옵션 문자에 바로 붙여서 지정하거나 공백으로 구별해서 지정 |
긴 옵션 |
- '--help' 처럼 '--(하이픈 두 개)'에 이어서 단어로 표현하는 옵션 형식 - 긴 옵션의 인수는 '--longopt=argument' 처럼 '=' 로 연결해 지정하는 것이 관례 |
dd
짧은 옵션 예제 |
#include <unistd.h> greeting = "Good-bye, "; |
- 'getopt()' 를 사용하려면 헤더 파일 'unistd.h' 가 있어야 함 - 헤더파일 'stdlib.h' 는 EXIT_FAILURE와 EXIT_SUCCESS 를 사용하기 위해 포함 - 'while' 문이 핵심 - 'getopt()' 는 배열 argv[] 를 차례대로 해석하고, 끝까지 해석을 마치면 '-1' 을 반환 - '-1' 을 반환하는 시점에 while 문의 루프도 종료 - 'getopt()' 의 첫 번째, 두 번째 인수로 main() 에 주어지는 'argc'와 'argv'를 그대로 전달 - 세 번째 인수( "bhn:" )는 옵션으로 올 수 있는 문자열을 지정 - '-b', '-h', '-n' 세 종류의 옵션이 오므로 옵션을 나타내는 문자열을 지정 - n 뒤에 이어지는 ' : ' 은 옵션 '-n'이 인수가 필요하다는 것을 나타냄 - 만약 '-b'도 인수가 필요하다면 세 번재 인수로 'b:hn:' 이라는 문자열을 지정 - 옵션이 해석되면 'getopt()' 의 반환값으로 해당 옵션의 문자 코드를 얻을 수 있음 - 'optarg' 는 외부 변수로 정의되는 char 포인터 변수로, 옵션인 수를 나타내는 문자열을 가리킴 - 이 예제에서는 'argv[]' 의 내용을 그대로 이용하는 점에 주의 |
'프로그래밍 정리 > Ubuntu - C' 카테고리의 다른 글
[Ubuntu - 우분투 - C] 컴파일 에러 - undefined reference to (0) | 2015.05.16 |
---|---|
[Ubuntu - 우분투 - C] 명령줄 옵션(2) - 긴 옵션(getpot_long) (0) | 2015.05.15 |
[Ubuntu - 우분투 - C] nm - 심볼 확인, 심볼 검색 (0) | 2015.05.15 |
[Ubuntu - 우분투 - C] your cxx compiler cmake_cxx_compiler-notfound was not found (0) | 2015.05.14 |
[Ubuntu - 우분투 - C] gcc => cpp 사전 정의된 매크로 확인 (0) | 2015.05.13 |