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

            Onway

            我是一只菜菜菜菜鳥(niǎo)...
            posts - 61, comments - 56, trackbacks - 0, articles - 34

            APUE第十五章進(jìn)程間通訊 筆記

            Posted on 2011-12-31 15:55 Onway 閱讀(418) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 使用說(shuō)明
            2011-12-21 第十五章 進(jìn)程間通訊
            第一節(jié) 引言
            1,過(guò)去,UNIX系統(tǒng)IPC是各種進(jìn)程通訊方式的統(tǒng)稱(chēng)。
            2,套接字和STREAMS是僅有的兩種支持不同主機(jī)上各個(gè)進(jìn)程間IPC的類(lèi)型。

            第二節(jié) 管道
            1,管道使用例程:
            int main()
            {
            int n,fd[2];
            pid_t pid;
            char line[MAXLINE];

            if(pipe(fd) < 0)
            err_sys("pipe error");
            if(pid = fork() < 0)
            err_sys("fock error");
            else if(pid > 0){
            close(fd[0]);
            write(fd[1],"hello world\n",12);
            } else {
            close(fd[1]);
            n = read(fd[0],line,MAXLINE);
            write(STDOUT_FILENO,line,n);
            }
            exit(0);
            }

            第三節(jié) popen和pclose函數(shù)
            1,這兩個(gè)函數(shù)實(shí)現(xiàn)的操作是:創(chuàng)建一個(gè)管道,調(diào)用fork產(chǎn)生一個(gè)子進(jìn)程,關(guān)閉管道的不使用端,執(zhí)行一個(gè)shell以運(yùn)行命令,然后等待命令終止。

            第四節(jié) 協(xié)同進(jìn)程
            1,當(dāng)一個(gè)程序產(chǎn)生某個(gè)過(guò)濾程序的輸入,同時(shí)又讀取該過(guò)濾程序的輸出時(shí),則該過(guò)濾程序就成為協(xié)同進(jìn)程。
            2,注意協(xié)同進(jìn)程的IO緩沖方式,以避免死鎖的產(chǎn)生。

            第五節(jié) FIFO
            1,F(xiàn)IFO有時(shí)被稱(chēng)為命名管道。FIFO是一種文件類(lèi)型。
            2,F(xiàn)IFO有下面兩種用途:
            a,F(xiàn)IFO由shell命令使用以便將數(shù)據(jù)從一條管道線傳送到另一條,為此無(wú)需創(chuàng)建中間臨時(shí)文件。
            b,F(xiàn)IFO用于客戶(hù)進(jìn)程-服務(wù)器進(jìn)程應(yīng)用程序中,以在客戶(hù)進(jìn)程和服務(wù)器進(jìn)程之間傳遞數(shù)據(jù)。
            3,管道只能用于進(jìn)程間的線性連接,然而,因?yàn)镕IFO具有名字,它可以用于非線性連接。

            第六節(jié) XSI IPC
            1,有三種IPC我們稱(chēng)為XSI IPC,即消息隊(duì)列,信號(hào)量以及共享存儲(chǔ)器。
            2,以參數(shù)key和flag創(chuàng)建IPC結(jié)構(gòu),返回其標(biāo)識(shí)符,以其引用該IPC結(jié)構(gòu)。
            3,IPC_PRIVATE是鍵,IPC_CREATE和IPC_EXCL是flag的位標(biāo)志。
            4,XSI IPC為每一個(gè)IPC結(jié)構(gòu)設(shè)置了一個(gè)ipc_perm結(jié)構(gòu)。該結(jié)構(gòu)規(guī)定了權(quán)限和所有者。
            5,XSI IPC的主要問(wèn)題是:
            a,IPC結(jié)構(gòu)是在系統(tǒng)范圍內(nèi)起作用的,沒(méi)有訪問(wèn)計(jì)數(shù)。
            b,這些IPC結(jié)構(gòu)在文件系統(tǒng)中沒(méi)有名字。為了支持它們,不得不增加了十幾條新的系統(tǒng)調(diào)用和一些新的命令。
            c,IPC結(jié)構(gòu)不使用文件描述符,不能對(duì)它們使用多路轉(zhuǎn)接IO函數(shù)。

            第七節(jié) 消息隊(duì)列
            1,megget用于創(chuàng)建一個(gè)新的消息隊(duì)列或打開(kāi)一個(gè)現(xiàn)存的隊(duì)列。
            2,msgsnd將數(shù)據(jù)放到消息隊(duì)列中。
            3,msgrcv從消息隊(duì)列中取用函數(shù)。
            4,msgctl對(duì)消息隊(duì)列指定執(zhí)行多種操作。
            5,在新的應(yīng)用程序中不應(yīng)當(dāng)再使用消息隊(duì)列。

            第八節(jié) 信號(hào)量
            1,信號(hào)量是一個(gè)計(jì)數(shù)器,用于安排多個(gè)進(jìn)程對(duì)共享數(shù)據(jù)對(duì)象的訪問(wèn)。
            2,一個(gè)信號(hào)量控制一個(gè)共享資源的使用情況。
            3,使用信號(hào)量要先創(chuàng)建一個(gè)信號(hào)量集,調(diào)用函數(shù)semget。
            4,semctl函數(shù)包含了多種信號(hào)量的操作。
            5,函數(shù)semop自動(dòng)原子性地執(zhí)行信號(hào)量集合上的操作數(shù)組。
            6,雖然記錄鎖慢于信號(hào)量,但如果只需鎖一個(gè)資源并且不需要使用XSI信號(hào)量的所有花銷(xiāo)功能,則寧可使用記錄鎖。理由是使用簡(jiǎn)易,且進(jìn)程終止時(shí)系統(tǒng)會(huì)處理任何遺留下來(lái)的鎖。

            第九節(jié) 共享存儲(chǔ)
            1,共享存儲(chǔ)允許兩個(gè)或更多進(jìn)程共享一給定的存儲(chǔ)區(qū)。因?yàn)閿?shù)據(jù)不需要在客戶(hù)進(jìn)程和服務(wù)器之間復(fù)制,所以這是最快的一種IPC。
            2,使用共享存儲(chǔ)時(shí)需要掌握的唯一竅門(mén)是多個(gè)進(jìn)程之間對(duì)一給定存儲(chǔ)區(qū)的同步訪問(wèn)。
            3,通常,信號(hào)量被用來(lái)實(shí)現(xiàn)對(duì)共享存儲(chǔ)訪問(wèn)的同步。(記錄鎖也可以)。
            4,調(diào)用shmget獲得一個(gè)共享存儲(chǔ)標(biāo)識(shí)符。
            5,shmctl對(duì)共享存儲(chǔ)段執(zhí)行多種操作。
            6,共享存儲(chǔ)段創(chuàng)建之后就可以使用shmat連接它的地址空間。
            7,當(dāng)對(duì)共享存儲(chǔ)段的操作已經(jīng)結(jié)束的時(shí)候,調(diào)用shmdt脫接該段。
            8,使用存儲(chǔ)映射使用/dev/zero的優(yōu)點(diǎn)是:在調(diào)用mmap創(chuàng)建映射區(qū)之前,無(wú)需存在一個(gè)實(shí)際文件。其缺點(diǎn)是:只能在相關(guān)進(jìn)程間起作用。另外,對(duì)比/dev/zero的更好選擇,還可使用匿名存儲(chǔ)映射。

            第十節(jié) 客戶(hù)進(jìn)程-服務(wù)器進(jìn)程屬性
            1,客戶(hù)進(jìn)程和服務(wù)器進(jìn)程的某些屬性會(huì)受到它們之間所使用的IPC類(lèi)型的影響。

            ps:2011年的最后一天算是第一次結(jié)束了這一章了。僅限勉強(qiáng)有個(gè)概念的程度。
            亚洲AV无码久久精品狠狠爱浪潮| 91精品免费久久久久久久久| 亚洲级αV无码毛片久久精品| 99久久国产精品免费一区二区 | 欧美午夜A∨大片久久| 2021久久精品免费观看| 国产精品免费看久久久| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 99久久99久久精品免费看蜜桃| 久久高清一级毛片| 久久99精品国产麻豆| 久久一区二区三区99| 99久久国产综合精品麻豆| 青青草原综合久久大伊人导航| 国产精品一久久香蕉国产线看 | 国产精品狼人久久久久影院 | 色综合久久综合网观看| 一本一本久久a久久综合精品蜜桃| 国产成人99久久亚洲综合精品| 一本一本久久A久久综合精品 | 欧美黑人又粗又大久久久| 久久亚洲精品无码播放| 66精品综合久久久久久久| 久久精品国产久精国产思思| 久久天天婷婷五月俺也去| 久久久久国产亚洲AV麻豆| 久久国产成人| 久久这里有精品视频| 久久一区二区三区免费| 久久精品国产色蜜蜜麻豆| 久久精品亚洲福利| 久久露脸国产精品| 久久无码人妻精品一区二区三区 | 亚洲国产精品无码久久久秋霞2| 久久久久九国产精品| 亚洲国产天堂久久综合| 久久久久人妻一区二区三区| 中文字幕日本人妻久久久免费| 国产成人综合久久精品红| 久久夜色精品国产噜噜麻豆| 久久丫精品国产亚洲av|