커맨드라인 인자

  • argc: 인자의 개수 (최소 1)
  • argv: 각 인자의 값
  • 바이너리 파일 이름은 첫번째 인자에 해당됨.
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
	int i;
	printf("argc=%d\n", argc);
	for (i = 0; i < argc; i++) {
		printf("argv[%d]=%s\n", i, argv[i]);
	}
	exit(0);
}
  • 실행 결과
    • 쉘 특성 상 문자열을 큰 따옴표(",")로 묶어서 인자로 넘기면 공백도 포함됨.
    • 쉘 특성 상 와일드 카드 사용 시 현재 경로 기준으로 매칭되는 파일 이름을 인자로 넘김.
$ ./args
argc=1
argv[0] = ./args
$ ./args x
argc=2
argv[0]=./args
argv[1]=x
$ ./args x y
argc=3
argv[0]=./args
argv[1]=x
argv[2]=y
$ ./args x y z
argc=4
argv[0]=./args
argv[1]=x
argv[2]=y
argv[3]=z
$ ./args "x y z"
argc=2
argv[0]=./args
argv[1]=x y z


$ ./args *.c
argc=3
argv[0]=./args
argv[1]=hello.c
argv[2]=args.c
$ ./args "*.c"
argc=2
argv[0]=./args
argv[1]=*.c

 

GCC 컴파일러

gcc -g -W -Wall -o [실행파일] [C파일]
  • -o 는 목적 파일 이름 주는 옵션
  • -Wall 은 소스 수준의 정보를 디버깅 시 이용하기 위한 옵션.
  • 위 두 개는 항상 옵션으로 줄 것
  • 참고
 

gcc와 make 강좌: gcc 강좌

디렉토리명은 -I 라는 문자 바로 다음에 붙여서 씁니다. 즉 -I <디렉토리>라는 식이 아니라 -I<디렉토리> 입니다. 또한 유닉스에 있어 표준 헤더 화일 디렉토리는 /usr/include 라는 사실을 기억하시기

doc.kldp.org

man 명령어

리눅스 라이브러리 함수의 정보가 필요한 경우 매우 유용한 명령어

man strlen

 

+ Recent posts