這篇文章將為大家詳細(xì)講解有關(guān)fork函數(shù)是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
在linux中,只有一個函數(shù)可以創(chuàng)建子進(jìn)程:fork。
#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);
由f o r k創(chuàng)建的新進(jìn)程被稱為子進(jìn)程( child process)。該函數(shù)被調(diào)用一次,但返回兩次。兩次返回的區(qū)別是子進(jìn)程的返回值是0,而父進(jìn)程的返回值則是新子進(jìn)程的進(jìn)程I
D。將子進(jìn)程I D返回給父進(jìn)程的理由是:因?yàn)橐粋€進(jìn)程的子進(jìn)程可以多于一個,所以沒有一個函數(shù)使一個進(jìn)程可以獲得其所有子進(jìn)程的進(jìn)程I D。f o r k使子進(jìn)程得到返回值0的理由是:一個進(jìn)程只會有一個父進(jìn)程,所以子進(jìn)程總是可以調(diào)用g
e t p p i d以獲得其父進(jìn)程的進(jìn)程I D (進(jìn)程ID 0總是由交換進(jìn)程使用,所以一個子進(jìn)程的進(jìn)程I D不可能為0
)。
子進(jìn)程和父進(jìn)程共享很多資源,除了打開文件之外,很多父進(jìn)程的其他性質(zhì)也由子進(jìn)程繼承:
?
實(shí)際用戶I D、實(shí)際組I D、有效用戶I D、有效組I D。
?
添加組I D。
?
進(jìn)程組I D。
?
對話期I D。
?
控制終端。
?
設(shè)置-用戶- I D標(biāo)志和設(shè)置-組- I D標(biāo)志。
?
當(dāng)前工作目錄。
?
根目錄。
?
文件方式創(chuàng)建屏蔽字。
?
信號屏蔽和排列。
?
對任一打開文件描述符的在執(zhí)行時關(guān)閉標(biāo)志。
?
環(huán)境。
?
連接的共享存儲段。
?
資源限制。
父、子進(jìn)程之間的區(qū)別是:
? fork的返回值。
?
進(jìn)程I D。
?
不同的父進(jìn)程I D。
?
子進(jìn)程的t m s _ u t i m e , t m s _ s t i m e , t m s _ c u t i m e以及t m s _ u s t i m e設(shè)置為0。
?
父進(jìn)程設(shè)置的鎖,子進(jìn)程不繼承。
?
子進(jìn)程的未決告警被清除。
?
子進(jìn)程的未決信號集設(shè)置為空集。
使f o r k失敗的兩個主要原因是:( a )系統(tǒng)中已經(jīng)有了太多的進(jìn)程(通常意味著某個方面出了問題),或者(
b )該實(shí)際用戶I D的進(jìn)程總數(shù)超過了系統(tǒng)限制?;貞洷? - 7,其中C H I L D _ M A X規(guī)定了每個實(shí)際用戶I
D在任一時刻可具有的較大進(jìn)程數(shù)。
f o r k有兩種用法:
(1)
一個父進(jìn)程希望復(fù)制自己,使父、子進(jìn)程同時執(zhí)行不同的代碼段。這在網(wǎng)絡(luò)服務(wù)進(jìn)程中是常見的——父進(jìn)程等待委托者的服務(wù)請求。當(dāng)這種請求到達(dá)時,父進(jìn)程調(diào)用f o r k,使子進(jìn)程處理此請求。父進(jìn)程則繼續(xù)等待下一個服務(wù)請求。
(2)
一個進(jìn)程要執(zhí)行一個不同的程序。這對s h e l l是常見的情況。在這種情況下,子進(jìn)程在從f o r k返回后立即調(diào)用e x e c。
我們從一個例子程序中可以看到fork函數(shù)的作用,子進(jìn)程與父進(jìn)程之間的資源共享。
關(guān)于fork函數(shù)是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
新聞標(biāo)題:fork函數(shù)是什么-創(chuàng)新互聯(lián)
URL標(biāo)題:http://aaarwkj.com/article4/dipeie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、品牌網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司、面包屑導(dǎo)航、網(wǎng)站建設(shè)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容