zoukankan      html  css  js  c++  java
  • linux ipc——fifo

    1、概念

    命名管道:

    2、用途

    命名管道用的最多的地方就是进程间通信,它的原理是通过文件映射的方式实现的,进程间数据的传输直接在内存中进行,所以它的效率是很高的。

    3、特点

    6个,3-5同无名管道。

    ①存在文件系统(支持open、close、read、write)

    ②fifo文件存在于文件系统,但内容存在于内存,故大小受限制,缓冲区大小为4kb

    ③有名字

    ④数据无格式

    ⑤一次性操作

    ⑥执行完io操作之后,fifo文件继续存在与文件系统中

    4、使用方法

    FIFO文件的创建
    #include <sys/types.h>
    #include <sys/stat.h>
    int mkfifo( const char *pathname, mode_t mode);
     参数:
    pathname:FIFO的路径名+文件名。
    mode:mode_t类型的权限描述符。
     返回值:
    成功:返回 0
    失败:如果文件已经存在,则会出错且返回-1。

    5、举例

     1 #include <stdio.h>
     2 
     3 #include <sys/types.h>
     4 
     5 #include <sys/stat.h>
     6 
     7 #include <fcntl.h>
     8 
     9 #include <string.h>
    10 
    11 int main(int argc,char*argv[])
    12 
    13 {
    14 
    15   int fd;
    16 
    17   int ret;
    18 
    19   char buf[200]="";
    20 
    21   ret = mkfifo("my_fifo", S_IRUSR|S_IWUSR);
    22 
    23   if(ret < 0)
    24 
    25   {
    26 
    27     perror("mkfifo");
    28 
    29   }
    30 
    31   fd= open("my_fifo",O_RDWR|O_CREAT);
    32 
    33   if(fd < 0)
    34 
    35   {
    36 
    37     perror("open");
    38 
    39   }
    40 
    41   bzero(buf,sizeof(buf));// memset(buf,0,sizeof(buf));
    42 
    43   strcpy(buf,"hello china\n");
    44 
    45   ret=write(fd,buf,strlen(buf));
    46 
    47   if(ret < 0)
    48 
    49     perror("write to fifo");
    50 
    51   bzero(buf,sizeof(buf));// memset(buf,0,sizeof(buf));
    52 
    53   ret=read(fd,buf,sizeof(buf));
    54 
    55   if(ret < 0)
    56 
    57     perror("read from fifo");
    58 
    59   printf("buf read form my_fifo is %s\n",buf);
    60 
    61  
    62 
    63 }
    64 
    65  
    66 
    67  
  • 相关阅读:
    思维导图
    Delphi 之弹出气泡消息提示
    delphi 响应鼠标进入控件消息
    Delphi 获取当前鼠标下的控件内容
    delphi TTBXToolBar 增加外部控件
    delphi button 实现下拉列表
    delphi 设置多屏幕
    电脑双屏改单屏后看不到文件问题的解决
    delphi ListView 设置固定列宽
    数字孪生(Digital twin)
  • 原文地址:https://www.cnblogs.com/kunyashaw/p/3119025.html
Copyright © 2011-2022 走看看