从Windows的C / C ++ code特定的参数执行外部程序 [英] Execute external program with specific parameters from windows c/c++ code
本文介绍了从Windows的C / C ++ code特定的参数执行外部程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想从Program2中有我称之为Program2中具有完全相同的参数调用程序1。
在Linux中,我能做这样的:
I want to call Program1 from Program2 with exact same parameters which I called Program2 with. In Linux, I can do it like this:
int main(char argc, char* argv[]){
execv("./Program1", argv);
}
在窗口,我试过的 CreateProcess的
但作为第一个帖子说,有潜在的问题:的argv [0]不包含模块名作为预期。我想正确的argv [0]发送给PROGRAM1。我应该怎么办?
but as the first post says there is potential issue: "argv[0] Doesn't Contain the Module Name as Expected". I do want to send proper argv[0] to Program1. What should I do?
推荐答案
的argv [0]是程序本身的名称。
argv[0] is the name of the program itself.
您应该做的:
int main(char argc, char **argv)
{
char* argvForProgram1[] = { "./Program1", 0 }
execv(argvForProgram1[0], argvForProgram1);
}
或保持你的previous ARGS:
or to keep your previous args :
int main(char argc, char **argv)
{
char** argvForProgram1 = argv;
argvForProgram1[0] = "./Program1";
execv(argvForProgram1[0], argvForProgram1);
}
使用的execve
也更好,因为你保持环境:
Using execve
is better too because you keep the environment:
int main(char argc, char **argv, char **envp)
{
char** argvForProgram1 = argv;
argvForProgram1[0] = "./Program1";
execve(argvForProgram1[0], argvForProgram1, envp);
}
这篇关于从Windows的C / C ++ code特定的参数执行外部程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文