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);
}
Était-ce utile?

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 )

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top