从Windows的C / C ++ code特定的参数执行外部程序 [英] Execute external program with specific parameters from windows c/c++ code

查看:152
本文介绍了从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆