본문 바로가기

Linux

argc / argv가 뭔데?

 

argc

argument count의 약자

함수 호출 시 함수에 전달되는 인자의 개수를 의미한다

 

argv

argumnet vector의 약자

정해지지 않은 문자열을 의미한다

 

TCP/IP의 예제코드를 보면 main함수 부분에 항상 등장한다

 

int main(int argc, char *argv[ ])

{

          .......

 

          if(argc != 3) 

          {

                      printf("Usage : %s <IP> <port> \n" , argv[0]);

          }

 

          .......

 

}

 

argc(함수 호출 시에 전달되는 인자의 개수)가 3개가 되지 않으면 argv[0](문자열)을 출력하는 코드 부분이다.

아직은 c언어에 대한 가장 쉬운 부분만 알고 있을 뿐

복잡한 함수 선언과 포인터, 스트럭처에 대해선 아는 것이 없기 때문에 보이는 내용을 해석하는 정도를 목표로 한다.

 

만약, 위의 코드를 리눅스 환경에서 gcc로 컴파일하고, 생성된 실행파일을 ./client 로 실행하려 하면

' Usage: ./client <IP> <port> '라는 출력이 나오면서 실행파일은 실행되지 않는다.

<IP>와 <port>에 해당하는 인자가 부족하여 함수가 호출되지 않았기 때문이다.

여기서 서식문자 %s는 argv[0]의 내용을 출력하는데, 이 내용은 ' ./client ' 이다.

 

따라서 함수 호출을 위해 입력한 리눅스 명령어 ' ./client '가 char *argv[ ]가 가리키는 메모리에 할당 되었다고 추측한다.

'Linux' 카테고리의 다른 글

TCP/IP 기본  (0) 2021.09.29
기본 패키지 설치  (0) 2021.09.09