gpt4 book ai didi

c - 使用 execvp 在 Ubuntu 上用 C 语言构建 shell

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:26 25 4
gpt4 key购买 nike

  1. 我打算在 Ubuntu 上用 C 编写一个简单的 shell。我考虑过使用 exevcp() 函数。我只能运行“ls”命令,其他命令似乎都不起作用。谁能告诉我为什么会这样,或者给我一个构建 shell 的更好方法的想法?

  2. 我的目的是构建这个 shell;我不明白为什么我不能直接使用命令行并将其原样放入 execvp() 函数中。

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>

    #include <string.h>
    #include <errno.h>

    int main(int argc,char **argv,char **envp)
    {
    char* args[] = {"history" , NULL};

    execvp(args[0],args);
    }

你能给我解释一下吗?

最佳答案

exec(3) 只能用于运行外部程序。 history 是大多数 shell 中的内置项,不能以这种方式运行。

关于c - 使用 execvp 在 Ubuntu 上用 C 语言构建 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13520360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com