[리눅스 시스템 프로그래밍] 7.2 명령행 인자(Command Line Argument)

쉘에서 사용자는 새로운 프로세스를 실행하면서 인자를 전달할 수 있습니다. 이처럼 프로세스를 실행하면서 전달하는 인자를 명령행 인자(Command Line Argument)라고 부릅니다. C언어에서는 이와 같은 명령행 인자를 main 함수의 입력 인자로 받아 사용할 수 있어요.

int main(int argc, char **argv, char **envp);

argc – 명령행 인자 개수

argv – 명령행 인자 벡터

envp – 환경 변수 목록

C언어의 main 함수의 첫 번째 입력 매개변수는 명령행 인자 개수를 전달받습니다. 최소한 자신의 프로그램 경로를 전달받기 때문에 1보다 크거나 같습니다. 두 번째 입력 매개변수는 명령행 인자를 공백 단위로 구분하여 단어별로 문자열을 만들고 이들의 위치를 순차적으로 보관한 벡터입니다. 예를 들어 “demo abc 123” 처럼 입력하여 실행하였다며 argc는 3이면 argv[0]에는 “demo”, argv[1]에는 “abc”, argv[2]에는 “123”이 있습니다. envp에는 환경 변수가 오는데 이 부분은 다음(7.3 환경 변수)에 설명할게요.

다음은 main 함수로 전달받은 명령행 인자를 출력하는 예제 코드입니다.

/**********************************************************************
* ex_argu.c                                                           *
* exmple source – print argument list                                 *
**********************************************************************/

#include <stdio.h>

int main(int argc, char **argv)
{
    printf("argument count is %d\n", argc);

    int i=0;
    printf("arugment list\n");
    for(i=0; i< argc; i++)
    {
        printf("<%d>: %s\n", i, argv[i]);
    }
    return 0;
}
[그림 7.3] ex_argu 실행 화면
[그림 7.3] ex_argu 실행 화면