Выполнить внешнюю программу с конкретными параметрами из кода Windows C / C ++ - PullRequest
0 голосов
/ 02 февраля 2012

Я хочу вызвать Program1 из Program2 с точно такими же параметрами, с которыми я вызвал Program2.В Linux я могу сделать это так:

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

В Windows я попытался CreateProcess

, но, как говорится в первом посте, существует потенциальная проблема:[0] Не содержит имя модуля, как ожидается ".Я хочу отправить правильный argv [0] в Program1.Что мне делать?

1 Ответ

1 голос
/ 02 февраля 2012

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);
}
...