Process 为什么我们使用fork()或exec()系统调用创建新进程?

Process 为什么我们使用fork()或exec()系统调用创建新进程?,process,fork,exec,Process,Fork,Exec,正如我们在课堂上学到的,新进程是使用fork()或exec()系统调用创建的 假设我们使用fork()创建了一个子进程,这个新创建的进程的目的是什么?为什么我们创建了这个过程 我在询问我们必须创建新流程的应用程序。创建新流程的几个示例用法: 在shell环境中,您运行的每个命令(如ls)都是自己的二进制文件。主shell程序将fork(),然后执行相关实用程序 诸如ApacheHTTPD服务器之类的Web服务器将使用fork()创建一个新进程来处理单独的请求 一些web浏览器,如Chrome,

正如我们在课堂上学到的,新进程是使用fork()exec()系统调用创建的

假设我们使用fork()创建了一个子进程,这个新创建的进程的目的是什么?为什么我们创建了这个过程


我在询问我们必须创建新流程的应用程序。

创建新流程的几个示例用法:

  • 在shell环境中,您运行的每个命令(如
    ls
    )都是自己的二进制文件。主shell程序将
    fork()
    ,然后执行相关实用程序
  • 诸如ApacheHTTPD服务器之类的Web服务器将使用
    fork()
    创建一个新进程来处理单独的请求
  • 一些web浏览器,如Chrome,为每个打开的选项卡创建新的进程,以便利用独立进程之间的隔离来提高安全性
  • 每次通过GUI菜单(如windows中的“开始”菜单或MacOS中的dock)打开应用程序时,桌面环境都会分叉并执行新的进程
  • 在构建代码时,将诸如make fork和execute编译器之类的系统构建为单独的进程

还有很多其他方法,但以下是一些例子,说明您可能需要在一个程序中使用多个进程。

我们可以在不使用fork()和任何exec()系统调用的情况下运行shell命令吗?简短回答->除非您希望调用shell命令的程序关闭,否则不行。长答案->理论上可以找到一种方法。但它不会是远程平台独立的,也不值得这么做,而且对于同时包含两个或多个实用程序的任何shell命令来说,它都是完全不可使用的。