管道:

一个进程输出数据到另一个进程数据输入的通道。(半双工通信:同一时间,只能一端读另一端写,因为只有一条信道)

有名管道(命令管道):

在磁盘上会存在一个管道文件标识,但管道文件不占用磁盘block空间,数据会缓存在内存上。

可应用于同一台主机上的有权限访问的任意n个进程间通讯。(必须有一对读写进程)

有名管道使用:

创建管道文件:

命令   mkfifo 文件名

函数:int mkfifo(const char * pathname, int mode);

打开:open();write(); read(); close();

创建管道文件:

注意:

必须有一对读-写,只读或只写则会阻塞。

如果所有的读端关闭,则写端也会退出,反之亦然。

读写的次数没有直接联系。

如果写端保持但没有写数据(管道文件没有数据),读端阻塞。当写端将内存写满时,则写端阻塞。


无名管道(仅限父子进程):

没有管道文件标识,借助父子进程之间共享fork之前打开的文件描述符,其数据内容也是在内存上缓存。(一端写一端读)

无名管道的使用:父子进程间通讯

创建&打开: int 匹配(int fds[2]); 创建无名管道并打开,使得fds[0]为读端,fds[1]为写端;

注意:

父子进程必须关闭一对读写,并且不能是同一个进程关闭读写;

逻辑保持管道的半双工通信,防止一端关闭对应的读或写,而另一端无法感知;

进程间通讯 --- 管道(半双工通信)相关推荐

  1. linux进程间通讯-有名管道

    文章目录 阻塞和非阻塞概念 通过fcntl函数设置文件的阻塞特性 文件描述符概述 文件描述符的复制 有名管道 有名管道的创建 有名管道的基本读写操作 有名管道实现进程间通信 有名管道的读写规律(阻塞) ...

  2. 管道实现进程间通讯 、WaitNamedPipe

    一.管道实现进程间通讯 主要的理论知识 1.什么是管道以及分类 管道是两个头的东西,每一个头各连接一个进程或者同一个进程的不同代码,依照管道的类别分有两种管道,匿名的和命名的:依照管道的传输方向分也能 ...

  3. 【Linux】进程间通讯之管道

    进程间通信的机制包括:管道.信号量.共享内存.消息队列. 这篇博客主要介绍的是进程间通讯之管道的应用 一.管道的分类 管道都属于半双工通讯机制 管道分为有名管道和无名管道 1.有名管道 在磁盘上有一个 ...

  4. linux无名管道实验代码,Linux 进程间通讯之创建无名管道和读写无名管道

    Linux进程间通讯的方式: 1. 管道(pipe)和有名管道(FIFO). 2. 信号(signal) 3. 消息队列 4. 共享内存 5. 信号量 6. 套接字(socket) 管道通讯: 无名管 ...

  5. linux命名管道进程间通信,Linux进程间通讯--命名管道

    IPC安全 前面总结了匿名管道,如今来看命名管道:因为匿名管道的一个限制就是:只能是有血缘关系的进程间才能够通讯,好比:有两个同祖先的子进程,父子进程等:为了突破这一个限制,想让没有任何关系的两个进程 ...

  6. 【Linux】进程间通讯

    前提知识 进程间具有独立性 ,现在我们要打破独立性,去通讯,所以 通讯的成本一定很高. 又时候又需要多进程协同完成某种业务内容 ,例如以前: cat file | grep "hello&q ...

  7. linux进程间通讯的几种方式的特点和优缺点,和适用场合。

    http://blog.csdn.net/kakaka2011/article/details/6636661 1. 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有 ...

  8. 【Linux】-- 进程间通讯

    目录 进程间通讯概念的引入 意义(手段) 思维构建 进程间通信方式 管道 站在用户角度-浅度理解管道 匿名管道 pipe函数 站在文件描述符角度-深度理解管道 管道的特点总结 管道的拓展 单机版的负载 ...

  9. Android-Binder进程间通讯机制-多图详解

    本系列: Android-Binder进程间通讯机制-多图详解 一次Binder通信最大可以传输多大的数据?​​​​​​​ 关于Binder (AIDL)的 oneway 机制 概述 最近在学习Bin ...

最新文章

  1. MAXIEYE创始人周圣砚:以规模化迎接智能驾驶科技平权时代 | MEET2022
  2. JBoss Portal CAS 的配置
  3. 【转】Java 内存模型及GC原理
  4. 文思海辉口碑很差_文思海辉·金融打造全自动、100%话务覆盖的智能质检系统
  5. 远程断开远程桌面会话之方法
  6. 约束条件创建定义表(主码,外码的确定和防止空值等)
  7. jdk下载:各历史版本下载地址
  8. cocos2d js调用java_【cocos2d-js官方文档】二十四、如何在android平台上使用js直接调用Java方法...
  9. 并发编程实践之公平有界阻塞队列实现
  10. 巧用 | 低成本高可用,巧用Redis
  11. 最全的 Charles 抓包工具详解
  12. EFUCMSE16小说漫画系统搭建教程
  13. vmplayer虚拟机文件夹共享不生效解决方法
  14. 图像处理中关于矩的解释
  15. ArchLinux Plasma 简洁优雅桌面环境设置
  16. 台达0.4KW伺服上电报AL013
  17. 一个武侠游戏的成就界面需要针对每一个成就阶段配一句话,阶段分别是:默默无闻、初涉江湖、小有所成、一代宗师。想一想你会怎么写这个文案
  18. 微型计算机功耗,关机功耗不到1W EuP主板设计简析
  19. Ubuntu安装chrome
  20. java基础之—TreeSet集合学习笔记

热门文章

  1. SwiftUI 音乐和网络大全之网络音乐播放App支持iTunes搜索与播放(教程含源码)
  2. Storm体系结构和概念解释
  3. 服务器错误信息36887,TLS 协议所定义的严重错误代码是 10。Windows SChannel 错误状态是 1203...
  4. 初创公司股权结构应该怎么设计?举例三种模型
  5. 70条正则表达式的整理汇总
  6. 前端大屏展示框架搭建(二)
  7. c语言 北京时间转换utc时间_UTC时间转换成北京时间C语言函数代码
  8. 三、T100应付管理之采购应付-入库应付管理篇
  9. windows命令行工具连接mysql数据库报ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)
  10. 【OpenPCDet】稀疏卷积SPConv-v1.2代码解读(5)