我不知道为什么需要使用fork()
函数。
我已经做了很多功能,例如cat
,cd
,mkdir
,ps
,ls
...
但是,当我看到其他人的代码时,许多人都在使用fork()
函数。
我知道它是什么以及如何工作。但是我不明白为什么要制作简单的shell需要此功能。
我想知道如何使用此功能制作简单的外壳。
答案 0 :(得分:0)
这是一个设计。
人们没有使用fork(),而是使用fork()-exec()模式进行新处理。在我看来,您让您的shell理解cat,cd等。我的印象是您创建的不是Shell,而是REPL程序。那也行。例如,Bash也有一些以这种方式工作的命令(例如,您定义的功能,“ bg”等),但是您将外壳程序的功能限制为仅实现的功能。
但是,fork-exec是允许您的Shell运行程序。更重要的是,正在运行的程序不会与您的shell混淆。例如,程序上的任何分段错误都不会阻止您的Shell运行。我认为,这部分是外壳的更重要方面。