Как использовать _spawn или _exec для начальной загрузки?
-
21-09-2019 - |
Вопрос
После написания следующей программы, по -видимому, не передает аргументы в приложение 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)