所以这是我的问题。我有一个用户输入的命令列表,我需要使用它们来传递到 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/