gpt4 book ai didi

c - 用 C 编写自己的 shell,如何运行 Unix 可执行文件?

转载 作者:太空狗 更新时间:2023-10-29 17:16:59 29 4
gpt4 key购买 nike

在我的一门类(class)中,我们正在编写自己的 shell(基本上是从头开始)。

我们已经编写了一个词法分析器和一个解析器来将输入分成更容易处理的漂亮的“命令”结构。同样,我有一个函数 read_command(),它会一次读取一个命令并找出它是什么类型的命令(管道/和/或/简单/等)。

我现在正在尝试编写 execute_command(struct command cmd) 函数,它实际上接受并运行命令。我正在为如何开始实际编写此函数而苦苦挣扎。

假设我只是得到一个非常简单的 cat foo.txt 作为命令。我的命令结构会将它整齐地划分,所以我有一个包含两个单词的单词数组。

现在我想运行带有参数 foo.txtcat 可执行文件。我意识到我应该使用 $PATH 变量来尝试找到可执行文件,然后使用此参数运行它。

我正在努力解决几个主要问题:

  1. 我如何实际搜索命令 cat?请记住这个程序使用 C。我可以使用什么函数来搜索目录?我如何使用 PATH 来执行此操作?
  2. 当我确实找到命令 cat 时,如何将 foo.txt 作为参数来运行它?这如何在 C 中完成?

最佳答案

  1. 查看 getenv(3)及其亲属。你可能不需要直接对目录做任何操作,但如果你这样做,你可以使用 opendir(3) , readdir(3) , closedir(3)
  2. 使用fork(2)execl(3)或其亲属之一(execve(2) 是基础级 API)。

手册页本身或对这些函数中的任何一个进行简单的谷歌搜索都会找到大量示例来帮助您。

关于c - 用 C 编写自己的 shell,如何运行 Unix 可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8950367/

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