首页 > 系统相关 > 进程间通信-信号-pipe-fifo

进程间通信-信号-pipe-fifo

时间:2022-11-13 22:56:15浏览次数:43  
标签:pipe 一个 通信 FIFO 间通信 管道 fifo 进程

一、管道(pipe)

1、管道的定义和特点

管道是一种两个进程间进行单向通信的机制。因为管道传递数据的单向性,管道又称为半双工管道。管道的这一特点决定了器使用的局限性。管道是Linux支持的最初Unix IPC形式之一,具有以下特点:

  • 1.数据只能由一个进程流向另一个进程(其中一个读管道,一个写管道);如果要进行双工通信,需要建 立两个管道;
  • 2.管道只能用于父子进程或者兄弟进程间通信。,也就是说管道只能用于具有亲缘关系的进程间通信。

2、管道的命令

command1 | command2 | command3

二、命名管道(FIFO)

1、命名管道的定义和特点

POSIX标准中的FIFO又名有名管道或命名管道。我们知道前面讲述的POSIX标准中管道是没有名称的,所以它的最大劣势是只能用于具有亲缘关系的进程间的通信。FIFO最大的特性就是每个FIFO都有一个路径名与之相关联,从而允许无亲缘关系的任意两个进程间通过FIFO进行通信。所以,FIFO的两个特性:

  • 1.和管道一样,FIFO仅提供半双工的数据通信,即只支持单向的数据流;
  • 2.和管道不同的是,FIFO可以支持任意两个进程间的通信。

2、命名管道的使用

下面是FIFO的接口定义:

#include <sys/types.h>  
#include <sys/stat.h>  
/ /成功则返回0,失败返回-1 
int mkfifo(const char *pathname, mode_t mode);  

总结

    1. 管道是一个环形队列缓冲区,允许两个进程以生产者消费者模型进程通信。是一个先进先出(FIFO)队列,由一个进程写,而由另一个进程读。
    1. 管道在创建时获得一个固定大小的字节数。当一个进程试图往管道中写时,如果有足够的空间,则写请求立即被执行,否则该进程被阻塞。如果一个进程试图读取的字节数多于当前管道中的字节数,也将被阻塞。
    1. 操作系统强制实行互斥,只能有一个进程可以访问管道。
    1. 只有有血缘关系(父子关系)的进程才可以共享匿名管道,不相关的进程只能共享命名管道。

标签:pipe,一个,通信,FIFO,间通信,管道,fifo,进程
From: https://www.cnblogs.com/jiangcun/p/16887581.html

相关文章

  • 进程间通信-信号-pipe-fifo
    进程间通信-信号-pipe-fifopipepipe只能用于有血缘关系的进程进行单向通信。调用pipe函数时在内核中开辟一块缓冲区(称为管道)用于通信,它有一个读端一个写端,然后通过fd......
  • 进程间通信-信号-pipe-fifo
    1.信号signal1、信号的名字和编号:每个信号都有一个名字和编号,这些名字都以“SIG”开头,例如“SIGIO”、“SIGCHLD”等等。信号定义在signal.h头文件中,信号名都定义为正......
  • 进程间通信-信号-pipe-fifo
    一、有名管道FIFO1.在有名管道(namedpipe或FIFO)提出后,管道(pipe)限制得到了克服。值得注意的是,FIFO严格遵循先进先出(firstinfirstout),对管道及FIFO的读总是从开始处返回......
  • 进程间通信-信号-pipe-fifo
    进程间通信-信号-pipe-fifo有名管道FIFO无名管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(namedpipe或FIFO)提出后,该限制得到了克......
  • 进程间通信-信号-pipe-fifo
     任务详情编译运行附件中的代码,提交运行结果截图理解代码,特别是相关系统调用的使用。Linux进程间通信进程是程序运行资源分配的最小单位。每个进程各自有不同的用户......
  • 进程间通信-信号-pipe-fifo
    进程间通信-信号-pipe-fifo一、fifo1testmf.c——创建一个fifo2producer/consumer生产者和消费者二、pipe1pipe.c获取参数,执行命令2pipedemo.c获取键盘输......
  • 进程间通信-信号-pipe-fifo
    一、有名管道(FIFO)相关概念FIFO(Firstin,Firstout)为一种特殊的文件类型,它在文件系统中有对应的路径。当一个进程以读的方式打开该文件,而另一个进程以写的方式打开该......
  • 进程间通信-信号-pipe-fifo
    fifo管道在有名管道(namedpipe或FIFO)提出后,管道(pipe)限制得到了克服。FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FI......
  • 20201317 LYX Linux进程间通信学习
    Linux进程间通信1、匿名管道:pipe2、命名管道:fifo3、内存映射:mmap4、信号进程是程序运行资源分配的最小单位。每个进程各自有不同的用户地址空间,任何一个进程的全局变......
  • 流式数据库PipelineDB之BF杂谈
    流式数据库PipelineDB1.导语PipelineDB是一个PostgreSQL的一个流式数据库,是pg社区的一个扩展。下面来引入PipelineDB里面的一些概念:1.1什么是流?流是一种允许客户端将时序......