• <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,在異常終止情況下,內核(不是進程)產生一個指示其終止異常終止原因的終止狀態。
            色综合久久中文色婷婷| 久久久久免费视频| 精品国产乱码久久久久久人妻| 久久国产精品99精品国产987| 香蕉久久久久久狠狠色| 欧美熟妇另类久久久久久不卡 | 欧美亚洲国产精品久久| 日本人妻丰满熟妇久久久久久| 欧美一区二区精品久久| 久久婷婷五月综合国产尤物app| 久久久久久午夜成人影院 | 国产亚洲欧美精品久久久| 国产精品九九久久免费视频 | 久久Av无码精品人妻系列| 久久亚洲国产精品五月天婷| 99久久久国产精品免费无卡顿| 久久只有这精品99| 精品久久综合1区2区3区激情 | 综合久久给合久久狠狠狠97色 | 免费一级欧美大片久久网| 99久久久精品| 久久亚洲国产成人精品性色| 国内精品伊人久久久久妇| 久久精品国产精品亜洲毛片 | 久久久久国产精品熟女影院| 无码任你躁久久久久久| 久久99久久成人免费播放| 99国产欧美久久久精品蜜芽| 新狼窝色AV性久久久久久| 少妇熟女久久综合网色欲| 亚洲综合久久夜AV | 久久青青草原精品国产软件| 久久国产综合精品五月天| 777久久精品一区二区三区无码 | 色88久久久久高潮综合影院| 久久综合偷偷噜噜噜色| 亚洲一级Av无码毛片久久精品| 人妻系列无码专区久久五月天| 久久久99精品一区二区| 欧美精品福利视频一区二区三区久久久精品 | 99久久99久久久精品齐齐|