2023. 4. 8. 15:54ㆍCS/운영체제(OS)
명령행
: 유닉스 시스템에서 사용자가 명령을 입력하는 행을 람ㄹ하낟
프롬프트가 뜨고 커서가 사용자 입력을 기다리고 있는 행
명령행 인자
: 사용자가 명령행에서 명령을 실행할 때 해당 명령(실행 파일명)과 함께 지정하는 인자
명령의 옵션 / 옵션의 인자 / 명령의 인자
ex1) ls -l에서 '-l'을 명령행 인자
ex2) ls /tmp에서 '/tmp'를 명령행 인자
명령행 인자의 전달
명령행 인자는 자동으로 프로그램의 main 함수에 전달된다.
보통 main 함수는 다음과 같이 정의한다.
int main(void) { ... }
그러나 main 함수에서 명령행 인자를 전달받으려면 다음과 같이 정의해야 한다.
int main(int argc, char *argv[]) { ... }
첫 번째 인자인 argc는 명령과 인자를 포함한 개수로, 두 번째 인자인 argv 배열의 크기이다.
두 번째 인자인 argv는 명령과 각 인자를 담고 있는 배열이다.
명령행 인자는 argv에 문자열 형태로 저장된다.
예제1-6
#include <stdio.h>
int main(int argc, char argv[]) {
int n;
printf("argc = %d\n", argc);
for (n = 0; n < argc; n++)
printf("argv[%d] = %s\n", n, argv[n]);
return 0;
}
실행결과
결과
#ex1_6.out -h 100
argc = 3
argv[0] = ex1_6.out
argv[1] = -h
argv[2] = 100
03행 : 명령행 인자를 받기 위해 main 함수에 argc와 argv를 선언한다
06행 : 인자의 개수를 저장한 argc 값을 출력한다
07~08행 : 각 인자를 담은 argv의 내용을 출력한다
실행 결과를 보자. 명령행에서는 실행 파일명인 'ex1_6.out' 외에 '-h'와 '100'을 인자로 입력한다. 따라서 main 함수에 전달된 총 개수를 나타내는 argc 값은 3이 된다. argv[0]엥 실행 파일명이 저장되고, 차례로 인자가 저장됨을 알 수 있다. argv로 전달되는 값들은 문자열이므로 printf 함수로 출력하려면 형식 지정자 %s를 사용해야 한다.
[유닉스 명령 기본 규칙]
규칙3) 옵션의 이름은 한 글자여야 한다
규칙4) 모든 옵션의 앞에는 하이픈(-)이 있어야 한다
규칙5) 인자가 없는 옵션은 하나의 - 다음에 묶여서 올 수 있다 ex)-xvf
규칙6) 옵션의 첫 번째 인자는 공백이나 탭으로 띄고 입력해야 한다 ex)-l /tmp
규칙7) 인자가 있어야 하는 옵션에서 인자를 생략할 수 없다
규칙9) 명령행에서 모든 옵션은 명령의 인자보다 앞에 와야 한다(ls -l /tmp와 같이 해야 한다. ls /tmp -l과 같이 할 수 없다.)
규칙10) 옵션의 끝을 나타내기 위해 --을 사용할 수 있다
'CS > 운영체제(OS)' 카테고리의 다른 글
[Linux/Unix] 저수준 파일 입출력 (0) | 2023.04.08 |
---|---|
[Linux/오류] gcc 빌드중에 /usr/bin/ld: errno: TLS definition in /lib64/libc.so.6 section .tbss mismatches non-TLS reference in ... (0) | 2023.04.08 |