• <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,在異常終止情況下,內核(不是進程)產生一個指示其終止異常終止原因的終止狀態。
            中文字幕乱码人妻无码久久| 99久久婷婷国产综合亚洲| 国产女人aaa级久久久级| 久久被窝电影亚洲爽爽爽| 亚洲国产成人久久精品影视 | 人妻无码αv中文字幕久久 | 久久综合色之久久综合| 亚洲欧美日韩中文久久| 91久久精品视频| 久久人人爽人人人人片av| 996久久国产精品线观看| 久久一区二区三区免费| 丁香五月网久久综合| 91麻豆国产精品91久久久| 精品综合久久久久久97超人| 久久人妻无码中文字幕| 久久国产精品免费| 久久精品亚洲中文字幕无码麻豆| 欧美精品福利视频一区二区三区久久久精品 | 久久精品aⅴ无码中文字字幕不卡| 久久综合丁香激情久久| 色综合久久无码中文字幕| 久久人妻少妇嫩草AV蜜桃| 久久99精品国产麻豆宅宅 | 久久se精品一区精品二区| 色综合久久中文字幕无码| 超级碰碰碰碰97久久久久| 久久亚洲国产成人精品无码区| 99久久无色码中文字幕| 久久综合国产乱子伦精品免费| 久久精品国产色蜜蜜麻豆| 久久亚洲精品无码观看不卡| 国内精品久久久久久久coent| 久久香蕉国产线看观看99| 97久久超碰成人精品网站| 久久婷婷五月综合97色一本一本| 亚洲乱码中文字幕久久孕妇黑人| 久久99久国产麻精品66| 伊人色综合久久天天人手人婷 | 色综合久久久久无码专区| 久久婷婷五月综合色高清|