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

时间:2012-02-02 10:09:38

标签: c windows params

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

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

在Windows中,我尝试了CreateProcess

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

1 个答案:

答案 0 :(得分: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);
}