最近,我正在尝试在 C 上进行良好的练习,现在我来执行命令了。它告诉我,我应该我们char**
吗?但是我是不是有些概念错了。
请帮我。代码在这里
int excution(int cnt, char token[][BUFSIZE],int *t_token)
{
setenv ("PATH", "/bin:/bin/usr:", 1);
//printf("%s",getenv("PATH")); // check environement
const char *b_cd="cd";
const char *b_exit="exit";
const char *b_fg="fg";
const char *b_jobs="jobs";
int i,j,k;
//STEP 9:excute normal commanand
char args[cnt][BUFSIZE];
for(i=0;i<MAXARG;i++)
{
if(t_token[i]==COMMAND)
{
strcpy(args[0],token[i]); // copy 1st ARG
j=1;
while(t_token[i+1]==ARG)
{
strcpy(args[j],token[i+1]);
i++;
j++;
}
for(k=0;k<j;k++)
{
printf("%s\n", args[k]);
}
execvp (args[0], args);
}
}
它在编译时给了我警告。但是如果我将 2D 数组更改为char**
....
警告:从不兼容的指针类型传递 'execvp' 的参数 2 [默认启用] /usr/include/unistd.h:579:12:注意:预期的 'char * const*' 但参数的类型是 'char (*) [256]'</p>