Ejecute un progtwig externo con parámetros específicos desde el código de c / c ++ de windows

Quiero llamar a Program1 desde Program2 con exactamente los mismos parámetros con los que llamé a Program2. En Linux, puedo hacerlo así:

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

En Windows, probé CreateProcess

pero como la primera publicación dice que hay un problema potencial: “argv [0] no contiene el nombre del módulo como se esperaba”. Quiero enviar un argumento correcto [0] a Program1. ¿Qué tengo que hacer?

argv [0] es el nombre del propio progtwig.

Deberías hacer :

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

o para mantener sus argumentos anteriores:

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

Usar execve es mejor porque mantienes el medio ambiente:

 int main(char argc, char **argv, char **envp) { char** argvForProgram1 = argv; argvForProgram1[0] = "./Program1"; execve(argvForProgram1[0], argvForProgram1, envp); }