Linux有名管道
创始人
2024-11-11 02:39:30
0

有名管道FIFO

有名管道是文件系统中可见的文件,但是不占用磁盘空间,仍然在内存中。可以通过 mkfifo命令创建有

名管道(在共享目录不能使用mkfifo)

有名管道与无名管道一样,在应用层是基于文件接口进行操作

有名管道用于任意进程之间的通讯,当管道为空时,读进程会阻塞。

创建有名管道

mkfifo()

  1. 在shell中使用mkfifo 命令

    mkfifo filename

  2. mkfifo 函数 (在代码中使用其创建管道文件)

例子

一个进程写,一个进程读

首先通过命令创建管道文件:fifo

mkfifo fifo 

read.c

  #include    #include    #include    #include    #include    #include    #include       #define PATH_FIFO "/home/yujiu/fifo"   void if_error(int,char*);   int main(){       int res=0;       res=access(PATH_FIFO,F_OK);       if_error(res,"access");       int fd=open(PATH_FIFO,O_RDONLY);       if_error(fd,"read");       char buf[128];       ssize_t byte =0;       while((byte=read(fd,buf,sizeof(buf)))>0){           printf("read:%s\n",buf);           memset(buf,0,sizeof(buf));       }       close(fd);       return 0;   }   void if_error(int res,char* str){       if(res==-1){           perror(str);           exit(1);       }   }  

write.c

  #include    #include    #include    #include    #include    #include    #include       #define PATH_FIFO "/home/yujiu/fifo"   void if_error(int,char*,int);   int main(){       int res=0;       res=access(PATH_FIFO,F_OK);       if_error(res,"access",-1);       int fd=open(PATH_FIFO,O_WRONLY);       if_error(fd,"read",fd);       char buf[128];       ssize_t byte=0;       while(1){           memset(buf,0,sizeof(buf));           printf("input:\n");           fgets(buf,sizeof(buf),stdin);           buf[strlen(buf)-1]='\0';           byte=write(fd,buf,strlen(buf));           if_error(byte,"write",fd);           if(strcmp(buf,"exit")==0){               break;           }       }       close(fd);       return 0;   }   void if_error(int res,char* str,int fd){       if(res==-1){           perror(str);           if(fd!=-1){               close(fd);           }           exit(1);       }   }  

相关内容

热门资讯

每日必看!掌电竞技外挂(辅助挂... 每日必看!掌电竞技外挂(辅助挂)透明挂透视辅助工具(2021已更新)(哔哩哔哩)1、掌电竞技外挂ai...
六分钟攻略!德扑之星猫腻,创思... 六分钟攻略!德扑之星猫腻,创思维激k打牌有挂吗(一贯真的是有挂);创思维激k打牌有挂吗是一种具有地方...
3分钟科普!逍遥卡五星胡牌辅助... 3分钟科普!逍遥卡五星胡牌辅助器,福建老友麻将原来真的是有挂,微扑克教程(有挂教程)1.逍遥卡五星胡...
记者揭秘!川麻圈辅助器app(... 记者揭秘!川麻圈辅助器app(一贯真的是有挂)详细辅助教程;1)川麻圈辅助器app辅助挂:进一步探索...
让我来分享经验!永州扯胡子到底... 让我来分享经验!永州扯胡子到底有没有外挂(透明挂)透明挂透视辅助挂(2020已更新)(哔哩哔哩)1、...
三分钟解说!决战十三水有没有外... 三分钟解说!决战十三水有没有外 挂,新芒果监利开机有挂吗(一直是真的有挂);1、实时决战十三水有没有...
6分钟揭秘!闽游十三水攻略,禾... 6分钟揭秘!闽游十三水攻略,禾城麻将确实真的有挂,曝光教程(有挂辅助)1、实时闽游十三水攻略开挂更新...
分享开挂内幕!微友麻将助赢神器... 分享开挂内幕!微友麻将助赢神器购买(一贯存在有挂)详细辅助教程1、该软件可以轻松地帮助玩家将微友麻将...
我来教教你!闽游麻将有没有(透... 我来教教你!闽游麻将有没有(透明挂)透视脚本辅助工具(2025已更新)(哔哩哔哩)1、每一步都需要思...
七分钟揭秘!微信决胜麻将怎样比... 七分钟揭秘!微信决胜麻将怎样比较容易赢,微乐麻将专用挂(本来是有挂)1、每一步都需要思考,不同水平的...