如何在c语言中添加指针到指针数组



我试图在c中创建一个简单的shell。我使用execve()函数有问题。所以我把参数声明为char *cmdargs[10];其中包含-a或-l等参数。然而,它不能与我的execute函数一起工作,我认为,因为这个数组没有命令作为第一个参数,我不确定如何将命令添加到数组的第一个。假设现在数组是

cmdargs[] = {"-a", "-l", NULL};

我希望数组是cmdargs[] = {"ls", "-a", "-l", NULL};然而,该命令被声明为指针:那么我如何将这个指针添加到数组的开头。

如果你的数组是*cmdargs[] = {"-a", "-l", NULL};

我在这里使用execv是为了简单:execv请求一个空结束的env数组作为最后一个参数

int main() {
char *cmdargs[] = { "-a", "-l", NULL};
int i = 0;
while (cmdargs[i++])
;
//allocation of the size of a new array with one extra room
char **tmp = malloc( sizeof(cmdargs) * ++i );
//add the path you need
*tmp = "/bin/ls";
//null the end
tmp[i] = NULL;
//copy what was on the previous
i = -1;
while (cmdargs[++i])
tmp[i + 1] = cmdargs[i];
//use it..
execv(tmp[0], tmp + 1);
}

最新更新