为什么在Linux中我们不像创建“init”那样从头开始创建一个进程,而是通过分支的方法创建它的“fork”?
答案1
绝大多数进程都是作为共享上下文(打开文件、当前目录、环境变量等)的协作集的一部分创建的,并且对任何新进程上下文的调整都非常特定于它的创建目的,最简单的方法是与父进程配对,并让其代码在新进程中运行,然后在execve
执行下一步之前进行必要的更改。
干净的流程是极少数例外,不是规则。
为什么在Linux中我们不像创建“init”那样从头开始创建一个进程,而是通过分支的方法创建它的“fork”?
绝大多数进程都是作为共享上下文(打开文件、当前目录、环境变量等)的协作集的一部分创建的,并且对任何新进程上下文的调整都非常特定于它的创建目的,最简单的方法是与父进程配对,并让其代码在新进程中运行,然后在execve
执行下一步之前进行必要的更改。
干净的流程是极少数例外,不是规则。