Linux 명령행 인자(옵션)를 getopt_long() 함수로 구하기에 대한 질문.
글쓴이: ukyoukyo / 작성시간: 수, 2011/07/06 - 10:02오전
Linux C로 프로그래밍 할때,
getopt(), getopt_long(), getopt_long_only() 등의 함수로 명령행 인자(argc, argv)를
구할 수 있는데요,
# test_program --filename aaaa.txt
위와 같이 사용하면 이름이 aaaa.txt인 파일을 인자로 전달하라...는 의미로 대략 이해할 수 있는데요,
만약, 1개의 파일이 아니라 여러개의 파일을 인자로 전달하려면 어떻게 해야하는지요 ?
즉, # test_program --filename aaaa.txt bbbb.txt cccc.txt
이렇게 하려면 어떤식으로 getopt 시리즈 함수를 써야하는지...
Forums:
getopt는 그런 식의 옵션을 받을 수
getopt는 그런 식의 옵션을 받을 수 없습니다.
해결책 1: 파일 목록을 ','로 구별하게 한다. 예를 들어
--outputs=aaa.txt,bbb.txt,ccc.txt
그리고 나서 optarg를 parsing (','로 구별)해서 파일 목록을 얻는다.
단점: 파일 이름에 ','가 들어가면 안됨.
해결책 2: 필요한 파일 목록을 Option이 아닌, 프로그램 인자로 받는다.
getopt가 끝나고 나서 argv[optind~]를 활용
단점: 다른 인자를 받을 수 없음.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
cinsk님, 조언에 감사드립니다.
다른 인자도 받아야 하니까, 해결책1(optarg를 구분자를 사용하여 끊어서)을 응용해야겠습니다.
힌트 정말 감사합니다.
아참, 아래 웹사이트도 감사히 잘 보고 있습니다. 레퍼런스처럼요...^^
http://www.cinsk.org/cfaqs/html/
------------------ System programmer...^^
댓글 달기