使用windows c / c ++代码中的特定参数执行外部程序

我想从Program2调用Program1,其参数完全相同,我称之为Program2。 在Linux中,我可以这样做:

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

在Windows中,我尝试了CreateProcess

但正如第一篇文章所说,存在潜在问题:“argv [0]不包含预期的模块名称”。 我确实想将正确的argv [0]发送给Program1。 我该怎么办?

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); }