【问题标题】:How to use _spawn or _exec for bootstrapping?如何使用 _spawn 或 _exec 进行引导?
【发布时间】:2010-12-19 07:09:41
【问题描述】:

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

【问题讨论】:

    标签: c exec command-line-arguments dynamic-arrays spawn


    【解决方案1】:

    argv 向量中的第一个参数通常是要启动的可执行文件的完全限定名称:

    _spawnv、_spawnve、_spawnvp 和 _spawnvpe 调用在有可变数量的参数时很有用 新工艺。指向的指针 参数作为数组传递, argv。参数 argv[0] 通常是 指向实模式路径的指针或指向 保护模式下的程序名称, 和 argv1 到 argv[n] 是 指向字符串的指针 形成新的参数列表。这 参数 argv[n +1] 必须为 NULL 标记结束的指针 参数列表。

    (来自MSDN

    同样:

    _execv、_execve、_execvp 和 _execvpe 调用在新的参数数量时很有用 过程是可变的。指向的指针 参数作为数组传递, argv。参数 argv[0] 通常是 指向 cmdname 的指针。参数 argv1 通过 argv[n] 指向 形成新的字符串 参数列表。参数 argv[n+1] 必须是指向 标记参数列表的结尾。

    (MSDN)

    【讨论】:

      猜你喜欢
      • 2017-08-12
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 2014-03-28
      • 1970-01-01
      • 2015-06-03
      • 2019-11-27
      相关资源
      最近更新 更多