Linux,  Programming

[Linux] 명령어 Option 추출 함수 (getopt)

프로그램을 작성 할 때 option 활용은 많이 요구된다. 이 때 linux에선 이를 위한 함수를 제공한다.

getopt

해당 함수는 “-“가 붙은 option에 대해서만 추출해준다.

getopt optstring parameters
getopt [options] [--] optstring parameters
getopt [options] -o|--options optstring [options] [--] parameters
#Example
getopt (argument count, argument string, "option 종류")
ReturnDescription
-1 외 다른 값getopt 인자로 넣은 option에 해당하는 문자를 출력
-1더 이상 받아 올 문자가 없을 시
# Example
while (ch = getopt(argc, argv, "al") != -1)
    printf("%c ", ch);

Example

좀 더 세련된 코드를 작성한다면 아래처럼 작성 가능하다.

#include <stdio.h>
#include <unistd.h>
#define A_FLAG  (1<<0)
#define B_FLAG  (1<<1)
#define C_FLAG  (1<<2)

int main( int argc, char **argv ) {
	int i;
	int ch;
	int flag = 0;

	while( (ch = getopt( argc, argv, "alh")) != -1 ) {
		switch(ch) {
			case 'a' : flag |= A_FLAG; break;  // 0001
			case 'l' : flag |= B_FLAG; break;  // 0010
			case 'h' : flag |= C_FLAG; break;  // 0100
		}
	}
	if(flag & A_FLAG)
		printf("a option\n");
	if(flag & B_FLAG)
		printf("l option\n");
	if(flag & C_FLAG)
		printf("h option\n");
	return 0;
}

Leave a Reply

Your email address will not be published. Required fields are marked *