posted by 구름너머 2005. 3. 15. 13:27
int argc, char **argv 의 정체가 정말~~~
평점 :
- 1 (1 명)나도 평가하기quinton1 조회: 116답변: 1
답변이 완료된 질문입니다. (2005-02-23 21:09 작성)신고하기
몇 달전에 소켓 프로그래밍에 도전했다가 C언어가 너무 부실해서 다시
C와 C++ 공부하고 소켓으로 오늘 돌아왔습니다.
예전에 전혀 몰랐던 것들이 눈에 들어오기는 하는데
간단한 예제에서 딱 하나 도저히 모르는것이 하나 있으니...
지식인을 검색하니 답변들이 참 많이 나오던데 그래도 도무지 알수가 없네요.
소켓 프로그래밍 처음부터 끝까지 아쭈 꼬박꼬박 빼먹지 않고 나오는 이 녀석

int main(int argc, char **argv)

argc와 argv가 하나의 약속처럼 되어있는 언어인지 알기 쉽게 좀 설명 좀
부탁드리겠습니다.
이거 다시 C++로 돌아가야될지 참 걱정되네요... ^^
질문자가 선택한 답변
re: int argc, char **argv 의 정체가 정말~~~
microcat (2005-02-24 00:13 작성, 2005-02-24 00:14 수정)이의제기 | 신고하기
질문자 평
안녕하세요.

소켓프로그램을 좀 하셨다니까 함수 정도는 쉽게 하나 작성하실 수 있으리라 생각됩니다.

함수의 형태는 일반적으로

return_value Function_Name(Arguments...)형태로 되어 있지요.

자세히 보시면 int main(int argc, char **argv)도 똑같은 형태입니다.

이것을 실행시키는 것은 바로 콘솔 프로그램이지요. 도스라던가 윈도우즈 운영체제일겁니다.

이녀석들 입장에서 보면 이 프로그램은 하나의 함수 형태로 작동하게 되는 것이죠.

서두가 길었군요. 본 설명 들어갑니다.

int argc는 argument count라고 해서 본 프로그램을 실행할 때 매개변수가 몇개 들어갔느냐... 이런 것입니다.

예를 들어서 format이라는 프로그램을 작성했다고 합시다.

format c: /s를 하게 되면 argc의 값은 3이 들어갑니다.

단순히 문자열이 3개 들어갔다고 해서 3입니다.

char **argv(또는 char *argv[])에는 무엇이 들어가느냐하면

argv[0] = "format"
argv[1] = "c:"
argv[2] = "/s"
이것들이 들어가게 됩니다.

이것을 사용하게 되면 매개변수(arguments)로 받아들인 것들을 제어해서

본 프로그램을 제어할 수 있도록 할 수 있습니다.

약속되어 있냐고 물으신다면... 그렇습니다.

프로그래머 입장에서는 그냥 이대로 쓰기만 하면 되는겁니다 ^^;;;

ps. 하나 빼먹었는데 argv는 argument vector인지 value인지 그럴겁니다 ^^;;;

'UNIX' 카테고리의 다른 글

wait(2)  (0) 2005.03.15
main() 함수의 매개변수-> (argc,argv)  (0) 2005.03.15
Unix System Programming 5  (1) 2005.03.15
Unix 함수 설명 및 목록  (1) 2005.03.15
프로세스의 상태를 얻는 매크로  (0) 2005.03.14