为什么我应该使用fork()在C中制作简单的shell

时间:2019-04-24 01:26:56

标签: c shell

我不知道为什么需要使用fork()函数。

我已经做了很多功能,例如catcdmkdirpsls ... 但是,当我看到其他人的代码时,许多人都在使用fork()函数。 我知道它是什么以及如何工作。但是我不明白为什么要制作简单的shell需要此功能。 我想知道如何使用此功能制作简单的外壳。

1 个答案:

答案 0 :(得分:0)

这是一个设计。

人们没有使用fork(),而是使用fork()-exec()模式进行新处理。在我看来,您让您的shell理解cat,cd等。我的印象是您创建的不是Shell,而是REPL程序。那也行。例如,Bash也有一些以这种方式工作的命令(例如,您定义的功能,“ bg”等),但是您将外壳程序的功能限制为仅实现的功能。

但是,fork-exec是允许您的Shell运行程序。更重要的是,正在运行的程序不会与您的shell混淆。例如,程序上的任何分段错误都不会阻止您的Shell运行。我认为,这部分是外壳的更重要方面。