Вопрос

После написания следующей программы, по -видимому, не передает аргументы в приложение CALL. Во время исследования _spawnv и что он может сделать, _Execvp было найдено как то, что казалось подходящей альтернативой. Кто -нибудь видит проблему в исходном коде и знает, что нужно сделать, чтобы ее исправить?

#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);
}
Это было полезно?

Решение

Первый аргумент в argv Вектор обычно является полностью квалифицированным именем исполняемого файла, которое будет начато:

Вызовы _spawnv, _spawnve, _spawnvp и _spawnvpe полезны, когда в новом процессе есть переменное количество аргументов. Указатели на аргументы передаются как массив, argv. Аргумент argv [0] обычно является указателем на путь в реальном режиме или к имени программы в защищенном режиме и Argv1 Через argv [n] указаны на строки символов, формирующие новый список аргументов. Аргумент argv [n +1] должен быть нулевым указателем, чтобы отметить конец списка аргументов.

(Из MSDN)

Так же:

Вызовы _execv, _execve, _execvp и _execvpe полезны, когда количество параметров для нового процесса является переменной. Указатели на параметры передаются как массив, argv. Параметр argv [0] обычно является указателем на cmdName. Параметры argv1 Через argv [n] указывают на строки символов, образующие новый список параметров. Параметр argv [n+1] должен быть нулевым указателем, чтобы отметить конец списка параметров.

(MSDN)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top