从windows c/c+;使用特定参数执行外部程序+;代码
我想用与调用Program2完全相同的参数从Program2调用Program1。 在Linux中,我可以这样做:从windows c/c+;使用特定参数执行外部程序+;代码,c,windows,params,C,Windows,Params,我想用与调用Program2完全相同的参数从Program2调用Program1。 在Linux中,我可以这样做: int main(char argc, char* argv[]){ execv("./Program1", argv); } 在windows中,我尝试了 但正如第一篇文章所说,存在一个潜在的问题:“argv[0]没有像预期的那样包含模块名”。我确实想向程序1发送正确的argv[0]。我该怎么办?argv[0]是程序本身的名称 你应该做: int main(char argc
int main(char argc, char* argv[]){
execv("./Program1", argv);
}
在windows中,我尝试了
但正如第一篇文章所说,存在一个潜在的问题:“argv[0]没有像预期的那样包含模块名”。我确实想向程序1发送正确的argv[0]。我该怎么办?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
也更好,因为您保留了以下环境:
int main(char argc, char **argv, char **envp)
{
char** argvForProgram1 = argv;
argvForProgram1[0] = "./Program1";
execve(argvForProgram1[0], argvForProgram1, envp);
}
在Windows上,它叫。我的坏。我以为execv是linux特有的函数,但它是POSIX。