Domanda

Dopo aver scritto il seguente programma, che non sembra passare argomenti alla chiamata di applicazione. Mentre la ricerca _spawnv e che cosa può fare , _execvp è stato trovato in quello che sembrava essere una valida alternativa. Chiunque vede il problema nel codice sorgente e sapere che cosa deve essere fatto per risolvere il problema?

#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);
}
È stato utile?

Soluzione

Il primo parametro nel vettore argv è convenzionalmente il nome completo del file eseguibile da avviare:

  

Il _spawnv, _spawnve, _spawnvp, e   chiamate _spawnvpe sono utili quando v'è un numero variabile di argomenti   il nuovo processo. Puntatori ai   argomenti vengono passati come matrice,   argv. L'argv argomento [0] è di solito   un puntatore ad un percorso in modalità reale o per   il nome del programma in modalità protetta,   e argv 1 attraverso argv [n] siamo   puntatori alle stringhe di caratteri   formare la nuova lista di argomenti. Il   argomento argv [n + 1] deve essere NULL   puntatore per segnare la fine della   lista degli argomenti.

( MSDN )

Allo stesso modo:

  

Il _execv, _execve, _execvp, e   chiamate _execvpe sono utili quando il numero di parametri al nuovo   processo è variabile. Puntatori ai   i parametri sono passati come matrice,   argv. Il parametro argv [0] è di solito   un puntatore a CmdName. i parametri   argv 1 attraverso argv [n] punto al   stringhe di caratteri che formano la nuova   lista dei parametri. il parametro   argv [n + 1] deve essere un puntatore NULL per   segnare la fine della lista dei parametri.

( MSDN )

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top