2009-11-22 10 views
0

Après avoir écrit le programme suivant, il ne semble pas transmettre d'arguments à l'application appelée. Tout en recherchant _spawnv et ce qu'il peut faire, _execvp a été trouvé comme ce qui semblait être une alternative appropriée. Est-ce que quelqu'un voit le problème dans le code source et sait ce qui doit être fait pour le réparer?Comment utiliser _spawn ou _exec pour l'amorçage?

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

Répondre

2

Le premier argument dans le vecteur argv est classiquement le nom complet de l'exécutable à démarrer:

Les _spawnv, _spawnve, _spawnvp et appels _spawnvpe sont utiles quand il y a un nombre variable d'arguments à le nouveau processus. Les pointeurs vers les arguments sont passés en tant que tableau, argv. Le argv argument [0] est généralement un pointeur sur un chemin en mode réel ou le nom du programme en mode protégé, et argv 1 par argv [n] sont des pointeurs vers les chaînes de caractères formant la nouvelle liste des arguments. L'argument argv [n +1] doit être un pointeur NULL pour marquer la fin de la liste d'arguments .

(De MSDN)

De même:

Le _execv, _execve, _execvp et appels _execvpe sont utiles lorsque le nombre de paramètres au nouveau processus est variable. Les pointeurs vers les paramètres sont passés en tant que tableau, argv. Le paramètre argv [0] est généralement un pointeur sur cmdname. Les paramètres argv 1 via argv [n] pointent vers les chaînes de caractères formant la nouvelle liste de paramètres . Le paramètre argv [n + 1] doit être un pointeur NULL vers pour marquer la fin de la liste de paramètres.

(MSDN)