為什麼我們不在 Linux 中從頭開始建立進程並使其成為一個「分支」?

為什麼我們不在 Linux 中從頭開始建立進程並使其成為一個「分支」?

為什麼在Linux中我們不像創建“init”那樣從頭開始創建一個進程,而是透過分支的方法創建它的“fork”?

答案1

絕大多數的進程都是作為共享上下文(開啟檔案、當前目錄、環境變數等)協作集的一部分而創建的,並且對任何新進程上下文的調整都非常特定於它的創建目的,最簡單的方法是與父進程配對,並讓其程式碼在新進程中運行,然後execve在進行下一步操作之前進行必要的更改。

乾淨的流程是極少數例外,不是規則。

相關內容