본문 바로가기
개발 이야기/리눅스 이야기

리눅스 C 명령인수 매개변수 argv 형변환

by 런던살자 2019. 5. 1.

안녕하세요 마블랑입니다.

 

프로그래밍 언어에서 함수라면 매개변수를 지정하여 변동되는 데이터를 입력할수 있습니다.

 

C언어에서 가장 기본이 되는 Main함수도 함수이기 때문에 그러한 기능을 가지고 있는데요.

 

Main함수는 프로세스가 시작될때 제일 처음에 시작하는 함수인데 어떻게 데이터를 지정해야할지 모르는 분들이 있을거 같아 Main함수의 매개변수를 설명하려고 합니다.

 

일단 Main 함수의 매개변수 입력은 다음과 같이 지정합니다. 

 

./(실행프로세스명) (첫번째인자), (두번째인자), (세번째인자)

 

아래 화면의 para 프로세스는 매개변수 3개를 입력받아 출력하는 프로세스입니다.  

입력된 매개변수와 출력된 매개변수는 무지개 색상으로 순서대로 표시해두었습니다. 

 

보는것과 같이 맨앞에 Cnt 개수가 4로 나오듯이 실행프로세스도 매개변수로 간주됩니다. 

 

 

다음은 소스코드를 살펴볼게요

 

main 함수를 보면 매개변수가 지정되어 있습니다.

 

매개변수는 (int argc, char *argv[]) 이런식으로 지정해두면 시스템에 문제가 없는한 제한없이 매개변수를 지정할수 있습니다. 

 

여기서 argc 는 매개변수의 개수를 나타냅니다. 위에 설명했다시피 실행프로세스 명도 포함이 되어있습니다.

 

그리고 argv는 매개변수가 저장되어 있는 포인터 배열입니다. 

 

코드에서 main 함수 첫줄에 argc를 이용하여 에러 처리를 하고 있습니다. 이 프로세스는 3개의 매개변수를 입력받기 때문에 실행프로세스 명 포함 4개가 아니면 바로 종료해버리는 것이지요.

다시 코드를 보면 char 포인터배열을 정수형이나 문자열로 변경하는 형변환(캐스트, cast) 부분도 추가하였습니다.

 

int형의 경우 atoi를 이용하고 

 

char array일 경우 strcpy를 이용하면 됩니다. 물론, string.h 를 include 해야합니다.

 

 

이렇게 매개변수를 적용했으면 gcc를 통해서 컴파일을 하고 사용하면 됩니다. 

 

아래 보는 것과 같이 별다른 옵션이 없습니다. 

 

이렇게 매개변수 입력이 적용된 프로세스 구현을 해보았습니다.

 

간단한 샘플예제다 보니 출력 말고는 할것이 없지만 잘 활용한다면 괜찮은 프로세스가 만들어질 듯 하네요.

 

코드는 아래 첨부파일을 확인하세요.

 

c_para.c
0.00MB

 

그럼 마블랑이었습니다. 읽어주셔서 고맙습니다. 

댓글