2012-02-02 3 views
0

Program2를 호출 한 것과 동일한 매개 변수를 사용하여 Program2에서 Program1을 호출하려고합니다. 리눅스에서, 나는 이런 식으로 작업을 수행 할 수 있습니다 창에서Windows에서 특정 매개 변수로 외부 프로그램 실행 c/C++ 코드

int main(char argc, char* argv[]){ 
execv("./Program1", argv); 
} 

, 나는

CreateProcess을 시도했지만 첫 번째 게시물 잠재적 인 문제가 말한다 : "변수는 argv [0] 모듈이 포함되어 있지 않습니다 이름은 예상대로 ". 나는 적절한 argv [0]을 Program1에 보내고 싶다. 어떻게해야합니까?

+0

을 ['_execv'] (http://msdn.microsoft.com/en-us/library/886kc0as.aspx). –

답변

1

argv [0]은 프로그램 자체의 이름입니다.

int main(char argc, char **argv) 
{ 
    char* argvForProgram1[] = { "./Program1", 0 } 
    execv(argvForProgram1[0], argvForProgram1); 
} 

또는 이전 인수를 유지하기 :

당신은 무엇을해야

int main(char argc, char **argv) 
{ 
    char** argvForProgram1 = argv; 
    argvForProgram1[0] = "./Program1"; 
    execv(argvForProgram1[0], argvForProgram1); 
} 

당신이 환경을 유지하기 때문에 execve 너무 더 사용 :, 그것의 Windows에서

int main(char argc, char **argv, char **envp) 
{ 
    char** argvForProgram1 = argv; 
    argvForProgram1[0] = "./Program1"; 
    execve(argvForProgram1[0], argvForProgram1, envp); 
} 
+0

내 잘못입니다. 나는 execv가 리눅스 특정 함수라고 생각했지만 그것은 POSIX이다. – ov7a

관련 문제