从 char* 数组中的条目创建新字符串

标签 c arrays char execvp

所以这是我的问题。我有一个用户输入的命令列表,我需要使用它们来传递到 execvp()。下面是一个使用 ls 命令的示例。

char *cmdList = {"ls", "-l", "folder1/folder2"}

现在我需要一种方法来修改第一个条目,使其具有“/bin/ls”的形式

是通过 strcat 命令来完成的唯一方法吗?理想情况下,我想直接修改 ls 条目,这样我就可以将 cmdList 直接传递给 execvp()

最佳答案

您无需指定完整路径即可使用 execvp()。所以你不需要担心修改第一个参数。例如,如果您有一个带参数的数组:

#include <unistd.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
   char *cmdList[] = {"ls", "-l", "folder1/folder2", 0};

   execvp(cmdList[0], cmdList);
}

execvp() 将在您的 PATH 中搜索 ls 并执行它。

关于从 char* 数组中的条目创建新字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34799440/

相关文章:

c - 队列的递归计算

C 任务切换信号定时器

python - 根据Python中的另一个字典列表对字典列表进行排序

PHP 数组索引与数组关联

c++ - 从数据中读取不起作用,但为什么呢?

sql - 作为 Postgres 中另一个函数的参数的函数

java - 用于列出源文件中所有函数的 linux 工具?

javascript - 在 next.js/react 中映射时无法访问值

c - 十六进制和字符数组打印有什么区别?

c - 如何计算数组中的特定字符并调用函数?