Chinaunix首页 | 论坛 | 博客
  • 博客访问: 108908
  • 博文数量: 35
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 287
  • 用 户 组: 普通用户
  • 注册时间: 2015-08-01 19:56
文章分类
文章存档

2017年(6)

2016年(21)

2015年(8)

我的朋友

分类: 嵌入式

2015-12-29 22:38:28

有名管道FIFO

无名管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(named pipe或FIFO)提出后,该限制得到了克服。FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信(能够访问该路径的进程以及FIFO的创建进程之间),因此,通过FIFO不相关的进程也能交换数据。



FIFO文件的读写流程:读read 写write 打开open 关闭close
写进程:
1.创建fifo文件
2.向fifo中写入数据
3.退出函数

读进程
1.读取fifo中的数据
2.显示数据


FIFO写文件:
#include
#include
#include
#include

void main()
{
    int fd;
    /* make fifo */
    mkfifo("/tmp/myfifo",0666);

   /* open fifo*/
    fd=open("/tmp/myfifo",O_WRONLY);

   /* write to fifo*/
   write(fd,"hello fifo",11);

   close (fd);

}

FIFO读文件:
#include
#include
#include

void main()
{
    char c_buf[15];
    int fd;

    fd=open("/tmp/myfifo",O_RDONLY);
    read(fd,c_buf,11);

    printf("read %s\n",c_buf);

   close(fd);

   unlink("/tmp/myfifo");
}

在一个终端中执行fifo写文件,当执行时fifo写文件会阻塞,等待fifo读文件读出数据,在另一个终端中执行fifo读文件。就可以读出read hello fifo



阅读(1036) | 评论(0) | 转发(0) |
0

上一篇:指针基础

下一篇:linux 内核重要目录解释

给主人留下些什么吧!~~