使用 execve 调用 ls 和其他

标签 c

我正在尝试创建一个简单的程序来执行基本的 外壳命令。问题是 execve 每次都挂起。

代码如下:

    char* arglist[]={"ls","-l",NULL};
    char* env[]={NULL};
    int status;
    while (1)
    {
        if (fork() != 0)
        {
            waitpid(-1, &status, 0);
        }
        else
        {
            execve(arglist[0],arglist,env);
        }
    }
    return 0;
}

最佳答案

第一个参数应该是您执行的二进制文件的完整路径:

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

关于使用 execve 调用 ls 和其他,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34026838/

相关文章:

c - 从 fgets() 输入中删除尾随换行符

c - 最佳性能加法模 2^32 实现

c select() 读取直到空字符

c - printf() 填充 C 中的列

c - 文件是如何保存的?

c - 为什么我在大输入时遇到 scanf 的段错误

c - POSIX 线程如何在 Linux 中工作?

c++ - 如何在没有循环的情况下设置字节中的位

c - 如何将数组中的字符转换为字符串

c - arr 指针和 arr 表示法之间的区别