리눅스 getopt
글쓴이: cis07385 / 작성시간: 월, 2020/05/11 - 7:24오후
제가 getopt함수를 써서 ls 구현을 하는 중인데,
ls -l과
ls -R은 잘 나옵니다.
그런데 ls -lR을 치면 계속 오류가 뜹니다.
getopt 파라미터에서 한글자 밖에 안받는거 같은데...
case 'l' : myls_l();break;
case 'R' : myls_R();break;
여기서 lR을 받으면 myls_lR()함수를 실행시키고 싶은데 어떻게 해야될지 감이 안옵니다... 꼭 getopt써서 하고 싶은데... ㅠㅠ
Forums:
getopt 로 옵션을 2개로 받을 수는 없습니다.
getopt 로 옵션을 2개로 받을 수는 없습니다.
그러므로
로 호출을 하지 말고,
이런식으로 하여
이렇게 구동 되도록 만들어야 합니다.
그리고, 님처럼 옵션별로 함수를 별도로 만드시면, 옵션의 조합만큼 함수가 필요하기 때문에 매우 비 효율적이게 코딩이 될 수 있습니다.
옵션 별로 함수를 만들 것이 아니라, 출력 시에 옵션 별로 조건문을 이용하여 출력이 되도록 작성 하세요.
참고로 말씀드리면
참고로 말씀드리면
옵션 처리는 김정균님 말씀대로 하되
my_lsIR 함수를 별도로 만들기 보다는
'l', 'R' 의 각 플래그값에 따라 두개가 동시에 실행되도록 함수를 구현해보세요
------------------------------------------------------------
ProgrammingHolic
수정이 안되네요 ㅋ
위의 댓글에 있는데 또 썻는데 수정이 안되네요 ^^
------------------------------------------------------------
ProgrammingHolic
https://pubs.opengroup.org
https://pubs.opengroup.org/onlinepubs/009695399/functions/getopt.html 에 예제 코드가 있습니다. 참고하시기 바랍니다. getopt 함수를 활용하여 아래처럼 옵션 주는게 가능한거 같네요.
질문의 의도는, command line에서 옵션을
질문의 의도는, command line에서 옵션을 어떻게 주느냐가 아니라, 프로그램의 getopt 로 넘어온 옵션에 대해 문의 하는 겁니다. 즉, -ab 로 옵션을 주었을때, getopt 는 -a 와 -b 로 나누어 처리를 하는데 -ab 하나로 처리가 가능 하냐고 문의한 것이고, GNU getopt 나 BSD getopt 는 불가능 합니다. -ab 나 -a -b 로 모두 getopt 는 -a, -b 로 처리를 해야 합니다.
P.S.
getopt 동작 관련 내용은 cogniti3 님에게 답변한 것이 아니라 쓰레드를 읽는 분들 위하여 첨언한 것입니다.
아... 그렇네요.. 제가 질문의 의도를 잘못
아... 그렇네요.. 제가 질문의 의도를 잘못 파악했습니다. 요새 자꾸 동문서답을 해서 죄송합니다;;;
댓글 달기