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