免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

vfork和fork區別

fork:

創新互聯公司專注為客戶提供全方位的互聯網綜合服務,包含不限于成都做網站、網站設計、南開網絡推廣、成都微信小程序、南開網絡營銷、南開企業策劃、南開品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創新互聯公司為所有大學生創業者提供南開建站搭建服務,24小時服務熱線:13518219792,官方網址:m.newbst.com

   一個現有進程可以調用fork創建一個新進程。


   返回值:子進程中返回0,父進程返回子進程ID,出錯返回零。

    子進程是父進程的副本。

一個現有進程可以調用fork函數創建一個新進程。由fork創建的新進程被稱為子進程(child process)。fork函數被調用一次但返回兩次。兩次返回的唯一區別是子進程中返回0值而父進程中返回子進程ID。

子進程是父進程的副本,它將獲得父進程數據空間、堆、棧等資源的副本。注意,子進程持有的是上述存儲空間的"副本",這意味著父子進程間不共享這些存儲空間。

UNIX將復制父進程的地址空間內容給子進程,因此,子進程有了獨立的地址空間。在不同的UNIX (Like)系統下,我們無法確定fork之后是子進程先運行還是父進程先運行,這依賴于系統的實現。所以在移植代碼的時候我們不應該對此作出任何的假設。

為什么fork會返回兩次?

由于在復制時復制了父進程的堆棧段,所以兩個進程都停留在fork函數中,等待返回。因此fork函數會返回兩次,一次是在父進程中返回,另一次是在子進程中返回,這兩次的返回值是不一樣的。過程如下圖。

在fork函數執行完畢后,如果創建新進程成功,則出現兩個進程,一個是子進程,一個是父進程。在子進程中,fork函數返回0,在父進程中,fork返回新創建子進程的進程ID。我們可以通過fork返回的值來判斷當前進程是子進程還是父進程。

父進程的fork函數返回的值指向子進程的進程id, 因為子進程沒有子進程,所以其fork函數返回的值為0.

調用fork之后,數據、堆棧有兩份,代碼仍然為一份但是這個代碼段成為兩個進程的共享代碼段都從fork函數中返回,箭頭表示各自的執行處。當父子進程有一個想要修改數據或者堆棧時,兩個進程真正分裂。

    fork的一個特性是父進程的所有打開文件描述符都被復制到子進程中。父子進程的每個相同的打開描述符共享一個文件表項。

    在fork之后處理的文件描述符有兩種常見的情況:


    1.父進程等待子進程完成。在這種情況下,父進程無需對其描述符做任何處理。當子進程終止后,子進程對文件偏移量的修改已執行的更新。


    2. 父子進程各自執行不同的程序段。這種情況下,在fork之后,父字進程各自關閉他們不需要使用的文件描述符,這樣就不會干擾對方使件描用文件述符。 這種方法在網絡服務進程中經常使用。


父子進程之間的區別:


1. fork的返回值
2. 進程ID不同
3. 具有不同的父進程ID
4. 子進程的tms_utime、 tms_stime、 tms_cutime及tms_ustime均被設置為0
5. 父進程設置的文件鎖不會被子進程繼承
6. 子進程的未處理鬧鐘被清除
7. 子進程的未處理信號集被設置為空集

fork調用失敗的原因:


1.系統中有太多的進程

2. 實際用戶的進程數超過了限制

vfork和fork區別

vfork函數


vfork用于創建一個新進程,而該新進程的目的是exec一個新程序。 vfork與fork都創建一個子進程,但它不將父進程的地址空間復制到子進程中,因為子進程會立即調用exec,于是不會存訪問該地址空間。相反,在子進程調用exec或exit之前,它在父進程的空間中運行,也就是說會更改父進程的數據段、棧和堆。vfork和fork另一區別在于: vfork保證子進程先運行,在它調用exec或( exit)之后父進程才可能被調度運行。

本文題目:vfork和fork區別
瀏覽地址:http://m.newbst.com/article0/gdsgoo.html

成都網站建設公司_創新互聯,為您提供靜態網站、App開發、全網營銷推廣、、云服務器網站改版

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站建設