代码之家  ›  专栏  ›  技术社区  ›  posop

c execv通过函数传递参数

  •  1
  • posop  · 技术社区  · 7 年前

    我试图理解以下代码:

    char * pl[] = {"test.sh", NULL};
    execv("./test.sh", pl);
    

    这将从c程序执行我的脚本,但不会:

    execv("./test.sh", ["test.sh", NULL]);
    

    这也不起作用:

    execv("./test.sh", (char *) ["test.sh", NULL]);
    

    相同的精确错误。。。

    我显然误解了 char * [] 声明类型。我应该可以施放阵法吗?我能把它写成一行代码吗?

    我不理解{},我如何将这个位传递给函数,这是这个代码段的最终目标?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Petr Skocik    7 年前

    可以使用复合文字:

    execv("./test.sh", (char*[]){"test.sh", NULL});
    

    这仅适用于C99及更高版本。

    推荐文章