티스토리 뷰

심화

User Interface - argc, argv

Just4Fun 2017. 7. 7. 21:45

일반적인 C 프로그램은 다음과 같은 코드로부터 시작 한다.

C 프로그램은 반드시 main() 함수로부터 시작 되며, main() 함수의 argument는 int argc, char *argv[]를 가진다.  때로는 세번째 argument로 char *envp[]를 가질수도 있지만 대부분의 경우 사용하지 않는다.

argc와 argv는 쉘에서 프로그램을 실행할 때 실행파일 뒤에 연달아 입력되는 문자열의 개수와 각각의 문자열에 대한 포인터값을 알려주기 위하여 사용된다.

위와 같이 코딩하여 실행 파일을 만들고, 다음과 같이 실행 시켜서 결과를 확인해 본다.

위와 같이 실행하였을 때 전체 argument 개수는 실행파일명 포함 7개가 되고, 각각의 argument에 해당되는 문자열을 프린터하면 위와 같은 결과를 볼 수 있다.


임베디드 시스템에서도 UART를 이용한 user interface에서 동일한 기능을 할 수 있도록 구현해 보도록 하겠다.

먼저 각각의 argument 문자열을 저장할 수 있는 버퍼를 만들어 둔다.  지원 가능한 argument의 개수와 각각의 argument 문자열을 저장할 수 있는 버퍼의 크기는 board.h에 보드 환경에 적절하게 사용자가 직접 설정해 주면 된다.

parse_command() 함수는 사용자가 입력한 문자열을 받아 strtok()를 이용하여 단어 단위로 분리하여 argv_buf에 복사해 둔다.  입력 문자열을 끝까지 분리를 한다음 몇개의 단어로 이루어졌는지 카운트한 결과와 argv_buf주소를 되돌려 준다.

parse_command() 함수를 불러 입력 문자열을 분리하고, print_args()를 이용하여 argument 개수와 각각의 argments 문자열을 프린터 하도록 하였다.

print_args() 함수의 모양을 자세히 보면 main() 함수와 동일한 것을 알 수 있다.

그럼, 실제로 보드에서 실행하여 컴퓨터에서 만들어 본것과 같은 동작을 하는지 확인해 보도록 한다.



ui_arg.zip


'심화' 카테고리의 다른 글

User Interface - Command Line Interface(CLI)  (0) 2017.07.09
User Interface - 메뉴 방식  (0) 2017.07.08
User Interface - UART 문자열 입력  (0) 2017.06.29
User Interface - UART 특수키 처리  (0) 2017.06.24
megaOS - 13. Mailbox  (1) 2016.11.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함