• <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>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            popen system fork exec等函數的區別

            Posted on 2009-09-28 13:50 Prayer 閱讀(1356) 評論(0)  編輯 收藏 引用 所屬分類: LINUX/UNIX/AIX

            1、fork()一個程序一調用fork函數,系統就為一個新的進程準備了前述三個段,首先,系統讓新的進程與舊的進程使用同一個代碼段,因為它們的程序還是相同的,對于數據段和堆棧段,系統則復制一份給新的進程,這樣,父進程的所有數據都可以留給子進程,但是,子進程一旦開始運行,雖然它繼承了父進程的一切數據,但實際上數據卻已經分開,相互之間不再有影響了,也就是說,它們之間不再共享任何數據了。而如果兩個進程要共享什么數據的話,就要使用另一套函數(shmget,shmat,shmdt等)來操作。現在,已經是兩個進程了,對于父進程,fork函數返回了子程序的進程號,而對于子程序,fork函數則返回零,這樣,對于程序,只要判斷fork函數的返回值,就知道自己是處于父進程還是子進程中。事實上,目前大多數的unix系統在實現上并沒有作真正的copy。一般的,CPU都是以“頁”為單位分配空間的,象INTEL的CPU,其一頁在通常情況下是4K字節大小,而無論是數據段還是堆棧段都是由許多“頁”構成的,fork函數復制這兩個段,只是“邏輯”上的,并非“物理”上的,也就是說,實際執行fork時,物理空間上兩個進程的數據段和堆棧段都還是共享著的,當有一個進程寫了某個數據時,這時兩個進程之間的數據才有了區別,系統就將有區別的“頁”從物理上也分開。系統在空間上的開銷就可以達到最小。

             2、對于exec系列函數一個進程一旦調用exec類函數,它本身就“死亡”了,系統把代碼段替換成新的程序的代碼,廢棄原有的數據段和堆棧段,并為新程序分配新的數據段與堆棧段,唯一留下的,就是進程號,也就是說,對系統而言,還是同一個進程,不過已經是另一個程序了。不過exec類函數中有的還允許繼承環境變量之類的信息,這個通過exec系列函數中的一部分函數的參數可以得到。

            3.對于popen函數,他會通過command參數重新啟動shell命令,并建立連個進程間的管道通信.

            4.對于system函數,它也會重新啟動shell命令,當執行完畢后,程序會繼續system下一行代碼執行.

            99久久国产综合精品五月天喷水| 国产精品久久久香蕉| 色综合久久天天综合| 色99久久久久高潮综合影院 | 国产欧美一区二区久久| 国产免费福利体检区久久 | 日本人妻丰满熟妇久久久久久| 久久精品国产亚洲AV香蕉| 久久国产成人午夜aⅴ影院| 久久精品国产免费观看| 精品久久国产一区二区三区香蕉| 亚洲国产成人久久综合区| 久久久久久免费一区二区三区| 亚洲欧美久久久久9999 | 久久精品国产精品青草app| 怡红院日本一道日本久久| 亚洲伊人久久成综合人影院| 日本久久久精品中文字幕| 久久亚洲精品中文字幕| 久久人人爽人人爽人人片av麻烦| 麻豆精品久久精品色综合| 久久久精品人妻一区二区三区蜜桃| 久久有码中文字幕| 国产A级毛片久久久精品毛片| 久久久久久午夜成人影院| 欧美激情一区二区久久久| 欧美一区二区久久精品| 精品无码久久久久久国产| 亚洲国产精品久久66| 国产A级毛片久久久精品毛片| 久久久久夜夜夜精品国产| 99久久中文字幕| 伊人色综合久久| 99久久国产综合精品成人影院| 国产精品成人久久久久三级午夜电影| 91久久婷婷国产综合精品青草| 久久精品国产久精国产思思| 久久精品人人做人人妻人人玩| 久久久久成人精品无码中文字幕 | 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久99亚洲网美利坚合众国|