0

编写以下程序后,它似乎没有将参数传递给被调用的应用程序。在研究_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);
}
4

1 回答 1

2

向量中的第一个参数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 )

于 2009-11-22T21:25:42.397 回答