溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

fork函數(shù)指的是什么

發(fā)布時間:2021-09-22 12:31:22 來源:億速云 閱讀:158 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(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é)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(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)容。

AI