execvp不能与其他代码一起使用

时间:2014-06-06 03:35:36

标签: execvp

我正在尝试创建一个程序,用户不断被提示输入命令(例如ls -l)我将输入标记为命令并将它们存储在char *数组中。当我调用execvp执行命令时:

char * paramList [2] = {" / bin / ls"," -l"};

execvp(paramList [0],paramList);

没有任何反应。除了execvp调用和硬编码的ls -l命令之外,我还有其他程序没有任何内容。然而,即使是未使用的变量,代码也会立即停止工作。

1 个答案:

答案 0 :(得分:0)

你的数组(paramList)是一个简短的条目。

作为execvp的第二个参数给出的数组必须以NULL条目结束,因此数组中有3个值,而不是您当前拥有的两个值。

char* paramList[3] = { "/bin/ls", "-l", NULL };
execvp(paramList[0], paramlist);

应该按预期工作。

可能更好/更容易使用:

char* paramList[] = { "/bin/ls", "-l", NULL };

让编译器对它们进行计数。