Выполнить внешнюю программу с определенными параметрами из окна c/c++ кода

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

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

В Windows я попробовал CreateProcess

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

1 ответ

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

licensed under cc by-sa 3.0 with attribution.