我正在尝试创建一个程序,用户不断被提示输入命令(例如ls -l)我将输入标记为命令并将它们存储在char *数组中。当我调用execvp执行命令时:
char * paramList [2] = {" / bin / ls"," -l"};
execvp(paramList [0],paramList);
没有任何反应。除了execvp调用和硬编码的ls -l命令之外,我还有其他程序没有任何内容。然而,即使是未使用的变量,代码也会立即停止工作。答案 0 :(得分:0)
你的数组(paramList)是一个简短的条目。
作为execvp的第二个参数给出的数组必须以NULL条目结束,因此数组中有3个值,而不是您当前拥有的两个值。
char* paramList[3] = { "/bin/ls", "-l", NULL };
execvp(paramList[0], paramlist);
应该按预期工作。
可能更好/更容易使用:
char* paramList[] = { "/bin/ls", "-l", NULL };
让编译器对它们进行计数。