• <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 閱讀(328) 評論(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,在異常終止情況下,內核(不是進程)產生一個指示其終止異常終止原因的終止狀態。
            狠狠综合久久综合中文88| 久久人人爽人人爽人人片AV不| 久久成人国产精品一区二区| 精品久久人人妻人人做精品| 久久婷婷国产剧情内射白浆| 97久久天天综合色天天综合色hd| 99久久精品免费看国产一区二区三区 | 久久99精品久久久久久秒播| 亚洲精品WWW久久久久久| AV无码久久久久不卡蜜桃| 女同久久| 一本伊大人香蕉久久网手机| 国产成人久久精品一区二区三区 | 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 韩国三级大全久久网站| 久久夜色精品国产亚洲| 一本久久久久久久| 国产综合久久久久久鬼色| 怡红院日本一道日本久久 | 久久精品国产网红主播| 伊人久久一区二区三区无码| 色综合久久久久| 久久久久久久人妻无码中文字幕爆 | 一本久久久久久久| 国内精品伊人久久久久AV影院| 伊人热热久久原色播放www| 久久se这里只有精品| 久久中文字幕一区二区| 久久久久久久亚洲Av无码| 无码人妻少妇久久中文字幕蜜桃| 久久精品国产清自在天天线| 亚洲成人精品久久| 狠狠色噜噜狠狠狠狠狠色综合久久| 亚洲国产精品无码久久久不卡| 伊人久久大香线蕉综合5g| 色老头网站久久网| 要久久爱在线免费观看| 国产精品乱码久久久久久软件| 久久亚洲av无码精品浪潮| 久久久久国产亚洲AV麻豆| 久久久久国产日韩精品网站|