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);       }   }  

相关内容

热门资讯

玩家科普!湖南赣湘互娱辅助,新... 玩家科普!湖南赣湘互娱辅助,新道游辅助软件,机巧教程(有挂规律)1、打开软件启动之后找到中间准星的标...
总算清楚!哈糖大菠萝怎么挂,科... 总算清楚!哈糖大菠萝怎么挂,科乐天天踢有没有挂作必弊,窍要教程(有挂秘诀)科乐天天踢有没有挂作必弊是...
窍门辅助!hhpoker软件安... 窍门辅助!hhpoker软件安装包,wepoker辅助器安装包,普及教程(有挂秘诀)1、wepoke...
最新技巧!蜀山四川智能辅助插件... 最新技巧!蜀山四川智能辅助插件,哥哥打大a有辅助吗,学习教程(有挂方式)1、下载好蜀山四川智能辅助插...
妙招辅助!pokernow辅助... 妙招辅助!pokernow辅助工具,wepoker科技辅助器,开挂教程(有挂攻略)妙招辅助!poke...
发现玩家!wepoker专用辅... 发现玩家!wepoker专用辅助程序,闲逸辅助脚本,窍门教程(有挂实锤)所有人都在同一条线上,像星星...
于此同时!aa poker透视... 于此同时!aa poker透视软件,欢乐情怀开挂,妙招教程(有挂攻略)暗藏猫腻,小编详细说明欢乐情怀...
积累辅助!hhpoker有没有... 积累辅助!hhpoker有没有外挂,大菠萝辅助器,解迷教程(有挂秘籍)1、全新机制【hhpoker有...
一分钟带你了解!赣湘互娱怎么下... 一分钟带你了解!赣湘互娱怎么下载辅助,潮汕激k脚本,积累教程(真是有挂)1、赣湘互娱怎么下载辅助公共...
三分钟了解!佛手十三道辅助,来... 三分钟了解!佛手十三道辅助,来物局怎么开挂,窍门教程(果真有挂)来物局怎么开挂辅助器是一种具有地方特...