写入下述程序之后,它不会出现将参数传递给被叫应用。虽然研究 _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]通常为   一个指针,指向在实模式或到路径   在保护模式下的程序名,   和argv 1 通过的argv [n]的是   指针指向字符串   形成新的参数列表。该   参数的argv [N 1]必须为NULL   指针标记的结束   参数列表。

(来自 MSDN

同样地:

  

在_execv,_execve,_execvp,和   _execvpe通话时很有用的参数到新的数   过程是可变的。指针指向   参数作为数组传递,   argv的。该参数的argv [0]通常为   一个指针cmdname。参数   的argv 1 通过的argv [n]的点到   字符串形成新   参数列表。参数   的argv [N + 1]必须为NULL指针   标记参数列表的末尾。

MSDN

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top