티스토리 뷰

컴퓨터공학

getopt() 함수 예제

Yowu 2014.09.24 07:45



  • getopt() 함수는 콘솔 기반의 프로그램(어플리케이션)을 제작하는데 있어 옵션 값(인자, 파라미터)을 받는데 유용한 함수다.
  • 사실 '-a' 나 '--version'과 같은 옵션을 argc, argv로 처리할 수도 있겠지만 이를 직접 처리하는 것은 귀찮은 작업이다. 이를 위해 getopt 함수가 제공된다.
  • getopt() 함수는 stdio.h 와 unistd.h 모두에 정의되어있다. 두 헤더 파일에 정의된 함수의 차이는 딱히 없는 듯 하다.


hanopt.c

//140924 Source by YoWu (uyu423@gmail.com)

#include "stdio.h"

int main(int argc, char *argv[]) {
	int num;
	extern char *optarg;
	extern int optind;

	num = getopt(argc, argv, "au:h");

	switch(num) {
		case 'a':
			printf("Welcome to Unix System Programming World!\n");
			break;
		case 'u':
			printf("Nice to meet %s\n", optarg);
			break;
		case 'h':
		default:
			printf("Option : \n");
			printf("\t-a : print \"Welcome to Unix System Programming World!\"\n");
			printf("\t-u [String] : print \"Nice to meet [String]\"\n");
			printf("\t-h : print Help page\n");
			break;
	}

	return 0;
}

  • getopt는 int 형의 반환형을 가지며, 세번째 파라미터(인자)에 포함된 문자를 받는다면 해당 문자의 값을 반환한다.
  • -u 옵션 처럼 뒤에 추가 인자를 받고 싶다면 getopt 함수를 사용할 때 세번째 파라미터에서 문자+콜론(:)으로 추가해줘야 한다.
  • 위 예제는 한빛미디어 유닉스 시스템 프로그래밍 1장 연습문제 9번에 해당한다.


유닉스 시스템 프로그래밍

저자
이종원 지음
출판사
한빛미디어 | 2010-01-07 출간
카테고리
컴퓨터/IT
책소개
아, 이 함수는 이럴 때 쓰는구나! 예제로 배우는 시스템 호출 ...
가격비교



프로필사진

Yowu (Yu Yongwoo)

그냥 지나가는 흔한 백엔드개발자423 느낌 입니다
우분투 데스크탑 개발 환경을 선호합니다
최근에는 vscode에 vim 모드 올려서 쓰고 있습니다
개발용 키보드는 역시 해피해킹 프로2 무각입니다
락 밴드에서 드럼을 꽤나 오래 쳤었습니다