[OS] main함수의 int argc와 char *argv[]

2024. 3. 13. 22:51· SKKU SW/Operating System

int main(int argc, char *argv[]) 함수는 윈도우나 리눅스 같은 OS 명령 프롬프트를 이용해 인자를 전달해서 작동할 수 있도록 한다.

main 함수의 매개변수를 넘겨줌으로써 원하는 실행결과를 도출하고자 한다.

 

1. int argc

argc = argument count

argc는 운영체제가 이 프로그램을 실행했을 때 전달되는 인수의 갯수

즉 main()함수에 전달되는 데이터의 갯수를 의미

 

2. char *argv[]

argv = argument variable

char *argv[]는 문자열의 주소를 저장하는 포인터 배열

argv[0]은 프로그램의 실행경로

argv[1], argv[2]... 에는 순서대로 사용자가 입력한 argument가 저장됨

예를 들어, int main(int argc, char *argv[])에 ./tiny 8000 aaa이라는 입력을 준다면,

argc는 2개일 것이고, argv[0]에는 실행경로인 ./tiny가 들어가고, argv[1]에는 8000이 들어가고, argv[2]에는 aaa가 들어갈 것이다. 

=> argv의 각 인자는 띄어쓰기로 구분된다.

 

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
    int i;
    
    for (i = 0 ; i < argc ; i++)
        printf("argv[%d] : %s\n", i, argv[i]);
    exit(0);
}

 

실행 파일 만들고 ./arg_test I AM HYUNAH

라고 실행하면

 

argv[0]: ./arg_test

argv[1]: I

argv[2]: AM

argv[3]: HYUNAH

 

1. 파일 이름을 인자로 받아 해당 파일을 읽어오고 싶을 때

 

./test.exe input.txt 로 프로그램을 실행시킨다면 argv[1]에 "input.txt"가 들어가게 되는데, 

내가 인자로 넘겨준 파일을 읽어올 수 있도록 코딩하는 것이다.

 

2. 현재 프로그램이 개발모드인지 프로덕션 모드인지 구분하고 싶을 때

 

개발을 하다보면 디버깅을 해야하는 부분이 있다. 매번 디버깅용 코드를 넣었다 프로덕션용으로 디플로이를 할 때

디버깅 코드를 지우면 귀찮으니 프로그램을 실행할 때 인자로 현재 개발모드라는 것을 알려주는 용도로 사용하는 것이다.

#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[])
{
    if (argc >= 2 && !strcmp(argv[1], "development")){
        puts("Development mode !");
    } else {
        puts("Production mode !");
    }
}

 

출처: https://bo5mi.tistory.com/165

 

[C언어와 친구들] int argc와 char *argv[]란?

WEEK07에서 tiny server가 실행되는 main 함수가 int main(int argc, char **argv){} 다음과 같이 구성되어있었다. 정확히 argc와 argv가 어떤 인자인지 알기 위해 쓰는 글이다. main함수를 포함한 모든 함수에는 인

bo5mi.tistory.com

출처: https://almond0115.tistory.com/entry/main함수-매개변수-argc와-argv

 

main함수 매개변수 argc와 argv

1. main 함수의 매개변수 C 에서 main함수는 프로그램 진입점이다. 즉, 최초로 함수로 구동되어 실행되는 시점이다. 함수의 매개변수(파라미터)는 이 함수를 호출할 때 전달해주는 정보를 뜻한다.

almond0115.tistory.com

 

'SKKU SW > Operating System' 카테고리의 다른 글

[OS] [Linux / UNIX] sync, fsync 함수  (1) 2024.06.09
[OS] Anonymous pipe와 Named pipe  (0) 2024.06.07
[OS] Multiprocessor Scheduling - SQMS와 MQMS  (1) 2024.04.06
[OS] Multiprocessor Scheduling(1) - Cache Coherence(캐시 일관성) & Bus snooping(버스 스누핑)  (2) 2024.03.26
[OS] System call 시스템 콜  (0) 2024.03.25
'SKKU SW/Operating System' 카테고리의 다른 글
  • [OS] Anonymous pipe와 Named pipe
  • [OS] Multiprocessor Scheduling - SQMS와 MQMS
  • [OS] Multiprocessor Scheduling(1) - Cache Coherence(캐시 일관성) & Bus snooping(버스 스누핑)
  • [OS] System call 시스템 콜
효딩
효딩
개ㄱ발은 기세다. 줄여서 객기.
효딩
hyoding
효딩
전체
오늘
어제
  • 분류 전체보기 (245)
    • SKKU SW (30)
      • Computer Architecture (14)
      • Database (4)
      • Computer Network (3)
      • Operating System (7)
      • Mobile App Programming (2)
    • SuperCoding (68)
    • CS (8)
    • Web Programming (19)
    • Cloud (13)
    • Languages (45)
      • Python (8)
      • Java (37)
    • Supporters (8)
      • MoteMote (6)
      • NHN Cloud (2)
    • Certification (27)
      • Network Advisor (14)
      • ADsP (10)
      • Engineer Information Proces.. (3)
    • Finance (9)
      • 경제금융용어 (3)
    • Woori FISA (14)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 네트워크관리사 합격
  • 클라우드 서비스
  • 코틀린
  • Kotlin
  • 네트워크관리사 준비물
  • 우리FISA
  • nhn cloud
  • 서버생성
  • 글로벌소프트웨어캠퍼스
  • 우리fis아카데미
  • 네트워크관리사
  • 앱개발
  • 네트워크관리사2급 필기
  • 인프라개발
  • 클라우드
  • 서버개발
  • 봐
  • 네트워크관리사 후기
  • 우리에프아이에스
  • 클라우드서비스개발
  • apppaas
  • 네트워크관리사2급 공부방법
  • 네트워크관리사2급
  • 코틀린문법
  • 인프라
  • AWS
  • 네트워크관리사 커트라인
  • rds local 접속
  • 서버배포
  • K-디지털트레이닝

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
효딩
[OS] main함수의 int argc와 char *argv[]
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.