2014-07-25 3 views
2

C 프로그램에서 main 함수는 argc를보고 argv에서 전달되는 인수의 개수를 알고 있습니다. syscall execve가 전달 된 인수가 얼마나 많은지를 아는 방법은 나에게는 불분명하다. 누군가 execve가 인수를 처리하는 방법을 설명 할 수 있습니까?argv에서 전달되는 인수의 수를 execve가 어떻게 알 수 있습니까?

+0

http://geoffgarside.co.uk/2009/09/13/handling-arguments-with-execve/ –

+0

C를 실행하는 모든 환경이'execve' 시스템 호출을 가지고있는 것은 아닙니다. 질문을 유닉스 시스템으로 제한하고 있습니까? –

답변

1

내 가까운 리눅스 시스템에 execve에 대한 문서는 말한다 :

는 argv는 새로운 프로그램에 전달 된 인수 문자열의 배열입니다. envp는 일반적으로 key = value 형식의 문자열 배열이며 환경으로 새 프로그램에 전달됩니다. argv와 envp는 널 포인터로 종료되어야합니다.

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

내가 굵은 글씨로 한 중요한 부분 :이 정의 될 때 인수 벡터 및 환경, 호출 된 프로그램의 주요 기능에 액세스 할 수 있습니다. argv 목록 끝에 널 포인터가 있어야합니다. 커널은 인수를 계산하고 카운트를 argc으로 전달합니다.