您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關fork函數指的是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
復刻(英語:fork,又譯作派生、分支)是UNIX或類UNIX中的分叉函數,fork函數將運行著的程序分成2個(幾乎)完全一樣的進程,每個進程都啟動一個從代碼的同一位置開始執行的線程。這兩個進程中的線程繼續執行,就像是兩個用戶同時啟動了該應用程序的兩個副本。
fork函數是什么
從一個軟件包拷貝了一份源代碼然后在其上進行獨立的開發,創建不同的軟件。這個術語不只意味著版本控制上的分支,同時也意味著開發者社區的分割,是一種形式的分裂。
自由及開放源代碼軟件可以從原有開發團隊復刻而不需要事先的許可,這也不會違反任何著作權法律。授權的專有軟件(例如Unix)的復刻也時有發生。
fork系統調用用于創建一個新進程,稱為子進程,它與進程(稱為系統調用fork的進程)同時運行,此進程稱為父進程。創建新的子進程后,兩個進程將執行fork()系統調用之后的下一條指令。子進程使用相同的pc(程序計數器),相同的CPU寄存器,在父進程中使用的相同打開文件。
它不需要參數并返回一個整數值。下面是fork()返回的不同值。
負值:創建子進程失敗。
零:返回到新創建的子進程。
正值:返回父進程或調用者。該值包含新創建的子進程的進程ID[1]。
頭文件
#include<unistd.h>/*#包含<unistd.h>*/
#include<sys/types.h>/*#包含<sys/types.h>*/
fork函數原型
pid_tfork(void);
(pid_t是一個宏定義,其實質是int被定義在#include<sys/types.h>中)
返回值:若成功調用一次則返回兩個值,子進程返回0,父進程返回子進程ID;否則,出錯返回-1
函數說明編輯
一個現有進程可以調用fork函數創建一個新進程。由fork創建的新進程被稱為子進程(childprocess)。fork函數被調用一次但返回兩次。兩次返回的唯一區別是子進程中返回0值而父進程中返回子進程ID。
子進程是父進程的副本,它將獲得父進程數據空間、堆、棧等資源的副本。注意,子進程持有的是上述存儲空間的“副本”,這意味著父子進程間不共享這些存儲空間。
關于“fork函數指的是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。