我想从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); }
以上就是c/c++开发分享使用windows c / c ++代码中的特定参数执行外部程序相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/522459.html