中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

fork函數是什么

發布時間:2021-10-14 15:44:44 來源:億速云 閱讀:222 作者:柒染 欄目:編程語言

這篇文章將為大家詳細講解有關fork函數是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

fork函數

      
在linux中,只有一個函數可以創建子進程:fork。

    #include <sys/types.h>

    #include <unistd.h>

    pid_t fork(void);


由f o r k創建的新進程被稱為子進程( child process)。該函數被調用一次,但返回兩次。兩次返回的區別是子進程的返回值是0,而父進程的返回值則是新子進程的進程I
D。將子進程I D返回給父進程的理由是:因為一個進程的子進程可以多于一個,所以沒有一個函數使一個進程可以獲得其所有子進程的進程I D。f o r k使子進程得到返回值0的理由是:一個進程只會有一個父進程,所以子進程總是可以調用g
e t p p i d以獲得其父進程的進程I D (進程ID 0總是由交換進程使用,所以一個子進程的進程I D不可能為0
)。

      
子進程和父進程共享很多資源,除了打開文件之外,很多父進程的其他性質也由子進程繼承:

?
實際用戶I D、實際組I D、有效用戶I D、有效組I D。

?
添加組I D。

?
進程組I D。

?
對話期I D。

?
控制終端。

?
設置-用戶- I D標志和設置-組- I D標志。

?
當前工作目錄。

?
根目錄。

?
文件方式創建屏蔽字。

?
信號屏蔽和排列。

?
對任一打開文件描述符的在執行時關閉標志。

?
環境。

?
連接的共享存儲段。

?
資源限制。

      
父、子進程之間的區別是:

? fork的返回值。

?
進程I D。

?
不同的父進程I D。

?
子進程的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設置為0。

?
父進程設置的鎖,子進程不繼承。

?
子進程的未決告警被清除。

?
子進程的未決信號集設置為空集。

      
使f o r k失敗的兩個主要原因是:( a )系統中已經有了太多的進程(通常意味著某個方面出了問題),或者(
b )該實際用戶I D的進程總數超過了系統限制。回憶表2 - 7,其中C H I L D _ M A X規定了每個實際用戶I
D在任一時刻可具有的最大進程數。

f o r k有兩種用法:

(1)
一個父進程希望復制自己,使父、子進程同時執行不同的代碼段。這在網絡服務進程中是常見的——父進程等待委托者的服務請求。當這種請求到達時,父進程調用f o r k,使子進程處理此請求。父進程則繼續等待下一個服務請求。

(2)
一個進程要執行一個不同的程序。這對s h e l l是常見的情況。在這種情況下,子進程在從f o r k返回后立即調用e x e c。

我們從一個例子程序中可以看到fork函數的作用,子進程與父進程之間的資源共享。

關于fork函數是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄冈市| 咸阳市| 普宁市| 福海县| 白城市| 睢宁县| 闸北区| 盘山县| 昂仁县| 辽中县| 盐池县| 丰镇市| 定兴县| 邹城市| 南皮县| 余庆县| 沿河| 鹿泉市| 安阳县| 丹巴县| 哈巴河县| 罗城| 辽中县| 璧山县| 西盟| 易门县| 慈利县| 如皋市| 东光县| 白水县| 韶山市| 昆明市| 泸西县| 榆林市| 平江县| 盱眙县| 吉木萨尔县| 门头沟区| 洪洞县| 神农架林区| 包头市|