首页 > 解决方案 > 为什么我应该使用 fork() 在 C 中制作简单的 shell

问题描述

我不知道为什么我需要使用该fork()功能。

我已经做了很多函数,比如cat, cd, mkdir, ps, ls... 但是,当我看到其他人的代码时,很多人使用fork()函数。我知道它是什么以及如何工作。但我不明白为什么需要这个函数来制作简单的shell。我想知道如何使用这个函数来制作简单的shell。

标签: cshell

解决方案


这是一个设计。

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

然而,fork-exec 是允许您的 shell 运行程序。更重要的是,正在运行的程序不会弄乱你的 shell。例如,程序上没有分段错误可以阻止您的 shell 运行。在我看来,这部分是shell更重要的方面。


推荐阅读