2012-02-02 28 views
0

我想从Program2调用Program1,使用与Program2同样的参数。 在Linux中,我能做到这样的:使用Windows的特定参数执行外部程序c/C++代码

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

在Windows中,我试图CreateProcess

但作为第一个帖子说,有潜在的问题:“的argv [0]不包含模块按预期名称“。我确实想将适当的argv [0]发送给Program1。我该怎么办?

+0

在Windows上,它是称为['_execv'](http://msdn.microsoft.com/en-us/library/886kc0as.aspx)。 – 2012-02-02 10:34:04

回答

1

argv [0]是程序本身的名称。

你应该这样做:

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

或保留原来的ARGS:

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

使用execve也比较好,因为你保持环境:

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

我的不好。我认为execv是linux特有的功能,但它是POSIX。 – ov7a 2012-02-02 10:37:54

相关问题