• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天之道

            享受編程的樂趣。
            posts - 118, comments - 7, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            fork 和 vfork 的區別 & exit 和_exit的區別

            Posted on 2013-05-14 17:26 hoshelly 閱讀(327) 評論(0)  編輯 收藏 引用 所屬分類: Linux
            1.1
            fork可以創建一個新的子進程,調用一次,返回兩次,一次返回0值給子進程,另一次返回新的子進程的ID給父進程 。子進程是父進程的復制品,擁有父進程的數據空間、堆和棧,父子進程并不共享存儲空間,如果正文段是只讀的,那么父子進程共享正文段。

            一般而言,fork之后是父進程先執行還是子進程先執行是不確定的,這取決于內核的調度算法。
            fork有兩種用法:
            (1)一個父進程希望復制自己,使父、子進程同時執行不同的代碼段。這在網絡服務進程中是常見的——父進程等待委托者的服務請求。當這種請求到達時,父進程調用 f o r k,使子進程處理此請求。父進程則繼續等待下一個服務請求。
            (2) 一個進程要執行一個不同的程序。這對s h e l l是常見的情況。在這種情況下,子進程在從f o r k返回后立即調用e x e c。

            1.2
            vfork用于創建一個新的進程,而新的進程的目的就是exec一個新程序,vfork并不將父進程的地址空間復制給子進程,因為子進程會立即調用exec(_exit),于是也就不會訪問地址空間。不過它在調用exec或_exit之前,它在父進程的空間中運行。

            fork創建的子進程共享父進程的數據段、堆棧段;vfork創建的子進程共享父進程的數據段。

            vfork與fork的另一個區別是:vfork保證子進程先運行,在它調用exec或exit之后父進程才可能被調度運行,(如果在調用這兩個函數之前子進程依賴于父進程的進一步動作,則會導致死鎖)。

            2.1
            exit和_exit都是正常終止進程,_exit用于vfork時父進程有可能會被調度,它們都不同于異常終止abort,在異常終止情況下,內核(不是進程)產生一個指示其終止異常終止原因的終止狀態。
            日产精品久久久一区二区| 欧美一区二区精品久久| 久久人人超碰精品CAOPOREN| 色欲综合久久躁天天躁| 久久人人青草97香蕉| 久久久老熟女一区二区三区| 狠狠色噜噜狠狠狠狠狠色综合久久| 久久成人影院精品777| 亚洲国产香蕉人人爽成AV片久久| 亚洲国产美女精品久久久久∴| 久久婷婷五月综合色高清| 国产精品免费久久| 无码精品久久久天天影视| 国产农村妇女毛片精品久久| 中文无码久久精品| 亚洲国产成人久久一区久久| 国内精品伊人久久久久av一坑| 久久精品成人免费国产片小草| 久久免费小视频| 久久天天躁夜夜躁狠狠| 久久国产精品免费| 99久久国产主播综合精品 | 久久亚洲国产精品成人AV秋霞| 国产午夜精品久久久久免费视| 亚洲国产成人久久精品99| 国产精品成人久久久久久久| 人妻久久久一区二区三区| 久久久无码精品亚洲日韩蜜臀浪潮| 国内精品久久久久久久影视麻豆| 久久综合香蕉国产蜜臀AV| 久久亚洲sm情趣捆绑调教| 亚洲精品99久久久久中文字幕| 国产精品99久久久久久猫咪| 久久被窝电影亚洲爽爽爽| 国产精品久久久久久影院| 性高湖久久久久久久久| 亚洲精品无码久久久久| 亚洲国产精品无码久久一区二区 | 久久久国产打桩机| 一本久久综合亚洲鲁鲁五月天| 久久久久无码精品国产app|