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

            ivy-jie

            progress ...

            C++博客 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
              9 Posts :: 41 Stories :: 6 Comments :: 0 Trackbacks

            1、管道(pipe)

            用語(yǔ)具有親緣關(guān)系進(jìn)程間的通信

            匿名一次性使用的,半雙工。一個(gè)進(jìn)程往輸出端寫管道,另一個(gè)進(jìn)程從輸入端讀管道。
              #include<unistd.h>
              int pipe(int fd[2]);
              fd[0]:表示讀端
              fd[1]:表示寫端

             

            2、有名管道(named pipe)

            允許無(wú)親緣關(guān)系進(jìn)程間的通信

            有名管道,作為特別文件存儲(chǔ)于文件系統(tǒng)中。有名管道一旦建立就存在于文件系統(tǒng)中,除非顯示的unlink
              #include<sys/tpes.h>
              #include<sys/stat.h>
              int mknod(const char *path,mode_t mod,dev_t dev);
              int mkfifo(const char *path,mode_t mode);
              path:創(chuàng)建有名管道的全路徑名
              mod:創(chuàng)建有名管道的模式,指存取權(quán)限
              dev:設(shè)備值,該值取決于文件創(chuàng)建的種類,它只在創(chuàng)建設(shè)備文件時(shí)才會(huì)用到
              注意:有名管道創(chuàng)建后就可以使用了,有名管道和管道的使用方法基本是相同的。只是使用有名管道的時(shí)候必須先調(diào)用open()將其打開
              因?yàn)橛忻艿朗且粋€(gè)存在于硬盤上的文件,而管道是存在于內(nèi)存中的特殊文件

              下面的程序一個(gè)讀管道,另一個(gè)寫管道,這兩個(gè)函數(shù)用的是非阻塞讀寫管道

             

            #include <sys/types.h>
            #include <sys/stat.h>
            #include <errno.h>
            #include <fcntl.h>
            #include <stdio.h>
            #include <stdlib.h>
            #include <string.h>
            #define FIFO "/tmp/myfifo"

            main(int argc, char** argv)
            {
                char buf_r[100];
                int fd;
                int nread;
              
                if((mkfifo(FIFO,O_CREAT|O_EXCL)<0)&&(errno!=EEXIST))
                    printf("cannot create fifoserver\n");
                printf("Preparing for reading bytes...\n");
                memset(buf_r,0,sizeof(buf_r));

                fd=open(FIFO,O_RDONLY|O_NONBLOCK,0);
                if(fd==-1)
                {
                    perror("open");
                    exit(1);
                }
                while(1)
                {
                    memset(buf_r,0,sizeof(buf_r));
                    if((nread=read(fd,buf_r,100))==-1){
                        if(errno==EAGAIN)
                            printf("no data yet\n");
                 }
                    printf("read %s from FIFO\n",buf_r);
                    sleep(1);
                }
                pause();
                unlink(FIFO);
            }

             


            #include <sys/types.h>
            #include <sys/stat.h>
            #include <errno.h>
            #include <fcntl.h>
            #include <stdio.h>
            #include <stdlib.h>
            #include <string.h>
            #define FIFO "/tmp/myfifo"

            main(int argc,char** argv)
            {
                int fd;
                char w_buf[100];
                int nwrite;
                if(fd==-1)
                    if(errno==ENXIO)
                        printf("open error; no reading process\n");
              
                fd=open(FIFO,O_WRONLY|O_NONBLOCK,0);
                if(argc==1)
                    printf("Please send something\n");
                strcpy(w_buf,argv[1]);

                if((nwrite=write(fd,w_buf,100))==-1)
                {
                    if(errno==EAGAIN)
                        printf("The FIFO has not been read yet.Please try later\n");
                }
                else
                    printf("write %s to the FIFO\n",w_buf);
            }


            3、信號(hào)量

            主要用于進(jìn)程間及同一進(jìn)程不同線程之間的同步手段


            4、消息隊(duì)列

            克服信號(hào)量有限,可寫可讀


            5、信號(hào)(Signal)

            比較復(fù)雜,用于通知接受進(jìn)程有某事發(fā)生


            6、共享內(nèi)存

            最有用的進(jìn)程間通信方式,使得多個(gè)進(jìn)程可訪問(wèn)同以內(nèi)存空間,但需要依靠某種同步機(jī)制

            第一步:創(chuàng)建共享內(nèi)存

            第二步:映射共享內(nèi)存


            7、套接字

            不同機(jī)器之間通信

             

            posted on 2009-06-12 19:45 ivy-jie 閱讀(234) 評(píng)論(0)  編輯 收藏 引用 所屬分類: linux
            国产成人精品久久综合| 2020国产成人久久精品| 久久精品国产91久久综合麻豆自制| 亚洲精品午夜国产VA久久成人| 久久丫精品国产亚洲av| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 国产精品九九久久免费视频 | 中文字幕亚洲综合久久| 人妻精品久久久久中文字幕| 亚洲色婷婷综合久久| 久久99精品久久久久久野外| 伊人久久大香线蕉AV色婷婷色 | 欧美成a人片免费看久久| 亚洲欧美日韩久久精品第一区| 久久久久国产精品| 一本久久a久久精品亚洲| 久久久精品国产Sm最大网站| 久久99久久99精品免视看动漫| 久久久久亚洲精品男人的天堂| 久久99精品久久久久久hb无码| 久久久久香蕉视频| 日韩精品国产自在久久现线拍 | 久久这里的只有是精品23| 国产精品一久久香蕉产线看 | 人妻丰满?V无码久久不卡| 欧美久久综合性欧美| 性欧美丰满熟妇XXXX性久久久| 欧美激情精品久久久久久久九九九| 久久精品成人国产午夜| 国内精品久久人妻互换| 色综合久久中文字幕无码| 成人午夜精品无码区久久| 久久只有这精品99| 久久久久久曰本AV免费免费| 亚洲国产成人乱码精品女人久久久不卡| 日韩亚洲欧美久久久www综合网 | 色欲久久久天天天综合网精品| 久久久久综合网久久| 国产激情久久久久影院| 国产L精品国产亚洲区久久| 伊人久久综合热线大杳蕉下载|