qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          Linux學習—fork用法

           linux當中可以使用fork函數(shù)創(chuàng)建一個新進程
            #include <unistd.h>
            pid_t fork(void);
            返回值:子進程中返回0,父進程中返回子進程ID,出錯返回-1
            在fork調(diào)用之后,子進程獲得父進程數(shù)據(jù)空間、堆和棧的副本,但是并不共享這些存儲空間部分。
            fork的一個特性是父進程的所有打開文件描述符都被復(fù)制到子進程中。父、子進程的每個相同的打開描述符共享一個文件表項。
            這種共享文件的方式使父、子進程對同一文件使用了一個文件偏移量。
            fork有兩種用法:
            (1)一個父進程希望復(fù)制自己,使父、子進程同時執(zhí)行不同的代碼段。例如,父進程等待客戶端的服務(wù)請求,然后fork一個子進程處理這個請求,自己則繼續(xù)等待下一個服務(wù)請求。
            (2)一個進程要執(zhí)行一個不同的操作。fork一個子進程之后立馬調(diào)用exec
            fork的特殊應(yīng)用:fork兩次可以避免僵死進程,(僵死進程是指一個已經(jīng)終止,但是其父進程尚未對其進行善后處理的進程),父進程先fork一個子進程,子進程繼續(xù)fork一個孫子進程,然后就直接退出。這樣,父進程就可以很快的wait到子進程,釋放其資源,不需要阻塞,繼續(xù)自己的操作;而孫子進程交由了init進程托管,執(zhí)行自己的操作而不用擔心了。
            ps:write函數(shù)不帶緩沖,標準I/O庫是帶緩沖的,如果標準輸出練到終端設(shè)備,則它是行緩沖的,否則它是全緩沖的

          posted on 2014-03-27 17:07 順其自然EVO 閱讀(277) 評論(0)  編輯  收藏 所屬分類: linux

          <2014年3月>
          2324252627281
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 兰西县| 镇康县| 汪清县| 沈阳市| 农安县| 右玉县| 清水河县| 赤水市| 桓仁| 内黄县| 德格县| 竹北市| 浦江县| 宁波市| 巴东县| 璧山县| 谢通门县| 乐安县| 万山特区| 阿克| 阿拉尔市| 永清县| 特克斯县| 体育| 思南县| 桐城市| 潞城市| 马关县| 咸宁市| 辽源市| 资中县| 阳原县| 平乡县| 石景山区| 柳江县| 塘沽区| 天台县| 津市市| 阆中市| 丹棱县| 三原县|