Linux中的C Shell简介

时间:2015-04-22 10:11:00

标签: c linux shell

我对C语言中Shell的整个概念有一些疑问。在这个学期,我们必须学习C,但是我的大学里的人们的教学技巧并不是很好。所以对于第一个任务,我们必须创建一些shell。别在这里弄错了,我喜欢编程,我不是要求你完成我的作业,我只是想帮助你开始,因为我有点迷失在这里。

我要做的第一件事是用C语言创建一个Shell(我认为不同于linux shell脚本)并在Ubuntu虚拟机上运行它。它处于C编程的早期阶段,我们正在学习有关父子进程的知识。我引用"这个shell,将接受简单的单个命令。具体来说,它

a)将从终端读取节目的标题,

b)将创建一个新进程来运行刚刚读取的程序

c)将等待该过程结束。

一旦过程结束,它将读取并执行下一个命令。例如,shell将能够运行像" ls" &#34 ;.这让我感到困惑,因为我不了解外壳是什么以及它实际上有什么形式,在互联网上阅读并没有真正帮助我。   那么请你告诉我这应该是什么样的?我不明白它将如何运行或如何执行像ls这样的命令。我们已被指示使用fork和strtok作为命令。

提前致谢!

1 个答案:

答案 0 :(得分:0)

Shell是一个C程序。所以是的,它是像标准的c程序一样编写,编译和运行的。

同样重要的是要注意lswc等命令也是程序。因此,当我们说"运行命令ls"时,我们实际上是指"运行名称为ls"的程序。

现在这是有趣的部分:有一个名为exec( )的函数可以帮助程序运行另一个程序。 (有一整套exec函数)

这是什么shell:

  1. Shell使用fork ( )系统调用来创建子进程。
  2. 创建子进程后,shell使用exec ( )函数使子进程运行所需的命令(所需程序)(例如:ls,wc)。
  3. Shell使用wait ( )系统调用来完成子(以及命令)。
  4. 我上面描述的是一个非常简短的描述。并且上述3个步骤中的每一个可以具有一个或多个子步骤。

    您可以使用linux中提供的手册页了解fork()和exec()以及wait()。

    请在终端输入以下命令以了解这些:

    man 2 fork
    man 3 exec
    man 2 wait
    

    这些可能会清除你的一些问题..