execvp ls:无法访问“”:没有这样的文件或目录

时间:2018-10-27 08:47:19

标签: c fork exec ls

当我尝试使用execvp执行不带参数的ls之类的命令时,出现错误:ls:无法访问”:没有这样的文件或目录。

我不知道为什么,原因似乎是他在搜索参数”。

代码的工作方式如下:

int main(int argc, char *argv[])
{
    char command[250] = "ls";              
    argvs[0] = command;
    argvs[1] = NULL;
    if (execvp( argvs[0], argvs) == -1 )
       perror("exec failed");

    return 0;
 }

我必须在execvp中至少给出一个参数吗?并将其设置为NULL或其他一些空终止符?

1 个答案:

答案 0 :(得分:1)

如果argvs声明如下

char *argvs[2]; /* array of pointer */

那么下面的代码应该可以在您的计算机上工作

int main(int argc, char *argv[]) {
        char command[250] = "ls";
        char *argvs[2];
        argvs[0] = command;
        argvs[1] = NULL;
        if (execvp( argvs[0], argvs) == -1 )
                perror("exec failed");

        return 0;
}
  

我是否必须在execvp中至少给一个参数?

execvp的手册页中

int execvp(const char *file, char *const argv[]); /*its having fixed no of argument */

这意味着您必须为execvp()提供正好两个参数。