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

Creating a new string from entries in a char* array

这是我的问题。我有一个用户输入的命令列表,我需要用它来传递到 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 *cmdList[]= {"ls", "-l", "folder1/folder2"};

cmdList[0]="/bin/1s"; printf("%s", *cmdList);