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

相关内容

热门资讯

必看攻略"德州之星a... 必看攻略"德州之星app有外挂"详细外挂透明挂辅助工具-其实真的是有挂(哔哩哔哩)是一款可以让一直输...
第9分钟了解!哈灵辅助软件(辅... 第9分钟了解!哈灵辅助软件(辅助挂)一向是真的有挂(专业辅助扑克教程)-哔哩哔哩;超受欢迎的哈灵辅助...
透视脚本!pokemomo辅助... 您好,pokemomo辅助工具这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很...
第八分钟了解!多乐手游辅助(辅... 第八分钟了解!多乐手游辅助(辅助挂)详细透视开挂辅助AI教程(切实真的是有挂)-哔哩哔哩;多乐手游辅...
一分钟秒懂"扑克之城... 一分钟秒懂"扑克之城可以那假"详细外挂透明挂辅助插件-本来存在有挂(哔哩哔哩);详细扑克之城可以那假...
七分钟了解!中至上饶同城有挂(... 您好:中至上饶同城有挂这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌...
透视插件!aapoker可以选... 透视插件!aapoker可以选牌(透视)底牌透视挂辅助器(可靠开挂辅助2025新版教程)-哔哩哔哩;...
第一分钟了解!台州夜猫十三道辅... 第一分钟了解!台州夜猫十三道辅助器(辅助挂)详细透视开挂辅助解密教程(都是真的是有挂)-哔哩哔哩;第...
一分钟揭秘!"pok... 一分钟揭秘!"pokerrrr2辅助神器"详细外挂透明挂辅助器-好像有挂(哔哩哔哩);1、这是跨平台...
两分钟了解!牵手跑得快辅助(辅... 两分钟了解!牵手跑得快辅助(辅助挂)往昔有挂(专业辅助详细教程)-哔哩哔哩是一款可以让一直输的玩家,...