Comment utiliser _spawn ou _exec pour bootstrapping?
-
21-09-2019 - |
Question
Après avoir écrit le programme suivant, il ne semble pas passer des arguments à l'application appelée. Alors que des recherches _spawnv et ce qu'il peut faire , a été trouvé _execvp comme ce qui semblait être une alternative appropriée. Quelqu'un voit le problème dans le code source et de savoir ce qui doit être fait pour y remédier?
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
int main(int argc, char** argv)
{
int index;
char** args;
args = (char**) malloc((argc + 1) * sizeof(char*));
args[0] = "boids.py";
for (index = 1; index < argc; index++)
{
args[index - 1] = argv[index];
}
args[argc] = NULL;
return _execvp("python", args);
}
La solution
Le premier argument dans le vecteur de argv
est classiquement le nom complet de l'exécutable à démarrer:
Le _spawnv, _spawnve, _spawnvp et appels _spawnvpe sont utiles quand il y a un nombre variable d'arguments à le nouveau processus. Pointeurs à la arguments sont transmis sous forme de tableau, argv. L'argument argv [0] est généralement un pointeur vers un chemin d'accès en mode réel ou le nom du programme en mode protégé, et argv 1 par argv [n] sont pointeurs vers les chaînes de caractères la formation de la nouvelle liste des arguments. le argv argument [n + 1] doit être une valeur NULL pointeur pour marquer la fin de la liste des arguments.
(De MSDN )
De même:
Le _execv, _execve, _execvp et appels _execvpe sont utiles lorsque le nombre de paramètres à la nouvelle processus est variable. Pointeurs à la les paramètres sont transmis dans un tableau, argv. Le paramètre argv [0] est généralement un pointeur vers cmdname. Les paramètres argv 1 par argv points [n] à la chaînes de caractères formant le nouveau Liste des paramètres. le paramètre argv [n + 1] doit être un pointeur NULL marquer la fin de la liste des paramètres.
( MSDN )