c - execvp ls : cannot access ' ' : No such file or directory

标签 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 或其他一些 nullterminations?

最佳答案

如果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;
}

Do I have to give as minimum one argument in execvp?

来自execvp的手册页

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

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

关于c - execvp ls : cannot access ' ' : No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53020199/

相关文章:

java - 无法从 exec Java 方法运行 linux 命令

c - 如何在属于同一父进程的两个子进程之间共享内存

c - 共享内存不更新

c - fwrite 写一个整数

c - n 位设置为 1 的第 n 个最小数

c# - 将 float[] 作为 ref float 传递给非托管代码是个好主意吗?

c++ - eclipse ncurses 和 xterm,打印未知字符

ruby - fork WEBrick 并等待开始

c - 如何通过管道在外部程序中使用 STDIN 数据

c - 等待子执行