gpt4 book ai didi

c - 在 C 中传递给 execv 的参数

转载 作者:行者123 更新时间:2023-11-30 19:33:06 25 4
gpt4 key购买 nike

我正在用 C 语言编写一个程序,该程序 fork 并使用 execv 来调用传递到原始函数的命令。

所以我会输入类似“./program echo“hello””的内容,并且我的程序中的 fork 子代将使用 bash 命令“echo hello”。

execv 手册页非常模糊,它说“按照惯例,第一个参数应该指向与正在执行的文件关联的文件名。”我想弄清楚我是否理解正确。

从我见过的示例来看,这就是 execv 的调用方式:

execv(argv[0], argv);

但我知道 argv[0] 只包含“./program”。所以我认为这只是执行其内部相同的函数,但这不是我在示例中看到的。

据我所知应该是这样的:

execv(argv[1],argv+1);

execv(argv[1],argv+2);

谁能帮我理解这个?谢谢。

最佳答案

execv 的第一个参数是要执行的应用程序。 “/bin/echo”——您可能不想依赖环境变量的可用性来查找您的应用程序,因此首选完整路径。

execv 的第二个参数是一个 NULL 终止的 const 字符串数组,重复第一个参数的“/bin/echo”,因此:

char *const params = { "/bin/echo", "hello", NULL };

execv("/bin/echo", params);

关于c - 在 C 中传递给 execv 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46309758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com