gpt4 book ai didi

c - 通过分隔符分割 argv 数组中的参数

转载 作者:行者123 更新时间:2023-11-30 19:55:46 26 4
gpt4 key购买 nike

我正在尝试编写一个程序,其中我必须通过系统调用 exec() 执行 2 个程序。

这 2 个程序名由 argv 输入提供,如下所示:./forkexec 程序名 参数列表 ;程序名参数列表所以我必须在冒号处将其分开,为了清楚我的意思,我将做一个例子。

./forkexex ls -l -a/tmp\; ls -l -a/bin

所以我想我需要 2 个数组,对吗?我可以使用 strtok 来做到这一点吗?

最佳答案

每个参数都作为 argv 的单独元素提供。

argc    = 7
argv[0] = "./forkexec"
argv[1] = ";"
argv[2] = "hello"
argv[3] = ";"
argv[4] = "world"
argv[5] = ";"
argv[6] = "hello"
argv[7] = NULL

您在 argv[0] 指向的字符串中查找 ;,但它不包含任何内容。

<小时/>

请注意,您的方法使得无法将 ; 作为参数传递。根据您所做的编辑,您似乎正在尝试传递要执行的命令。如果您熟悉 shell 命令,则可以期望每个参数都是要执行的 shell 命令。

./forkexec 'ls /foo' 'ls /bar'

使用这种方法,您将拥有 argc-1 命令,并且可以在 argv[1]..argv[argc-1] 中找到它们。这些将作为 /bin/sh-cargv[i] 执行。

关于c - 通过分隔符分割 argv 数组中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58764238/

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