本文关键字: linux 管道通信,linux 进程通信方式,无名管道,有名管道

管道是Linux中进程间通信的一种方式,它把一个程序的输出直接连接到另一个程序的输入。Linux的管道主要包括两种:无名管道和有名管道。

无名管道是Linux中管道通信的一种原始方法,如图1(左)所示,它具有如下特点:

● 它只能用于具有亲缘关系的进程之间的通信(也就是父子进程或者兄弟进程之间)。

● 它是一个半双工的通信模式,具有固定的读端和写端。

● 管道也可以看成是一种特殊的文件,对于它的读写也可以使用普通的read()、write()等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。

有名管道是对无名管道的一种改进,如图1(右)所示,它具有如下特点:

● 它可以使互不相关的两个进程实现彼此通信。

● 该管道可以通过路径名来指出,并且在文件系统中是可见的。在建立了管道之后,两个进程就可以把它当做普通文件一样进行读写操作,使用非常方便。

● FIFO严格地遵循先进先出规则,对管道及FIFO的读总是从开始处返回数据,对它们的写则是把数据添加到末尾,它们不支持如lseek()等文件定位操作。

图1 无名管道(左)和有名管道(右)

热点链接:

linux下进程间管道通信,Linux下进程间通信方式-管道相关推荐

  1. linux+Qt 下利用D-Bus进行进程间高效通信的三种方式

    linux+Qt 下利用D-Bus进行进程间高效通信的三种方式 原文链接: https://www.cnblogs.com/wwang/archive/2010/10/27/1862552.html ...

  2. 进程间的通信(二)命名管道fifo

    在linux下我们先通过一个实例来说明一下mkfifo 的作用, 然后再看mkfifo 的使用详解 # mkfifo myfifo # ping edu.cn >> myfifo 另开一个 ...

  3. android 进程间的通信,Android native进程间通信实例-binder结合共享内存

    在android源码的驱动目录下,一般会有共享内存的相关实现源码,目录是:kerneldriversstagingandroidashmem.c.但是本篇文章不是讲解android共享内存的功能实现原 ...

  4. 进程间的通信IPC(无名管道和命名管道)

    进程间的通信IPC介绍 进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息. IPC的方式通常有管道(包括无名管道和命名管道).消息队列.信号量 ...

  5. python多进程间通信_Python 多进程编程之 进程间的通信(Queue)

    Python 多进程编程之 进程间的通信(Queue) 1,进程间通信 Process有时是需要通信的,操作系统提供了很多机制来实现进程之间的通信,而Queue就是其中的一个方法 ----这是操作系统 ...

  6. 命名管道(FIFO) Linux进程进程间的通信之命名管道(FIFO)

    Linux进程进程间的通信之命名管道(FIFO) 命名管道(FIFO),它和一般的管道一样.都是作为中间的邮递员来实现两个进程间的通信交流. 命名管道(FIFO)有几个特点: 1.命名管道(FIFO) ...

  7. Linux C 进程间的管道通信

    1.进程间的通信方式 a.管道通信:无名管道.有名管道 b.信号通信:包括信号的发送.接收和处理 c.IPC(Inter-Process Communication):共享内存.消息队列.信号灯 ** ...

  8. linux 下进程间通讯: 共享文件

    共享文件算是比较传统的进程间数据交换的一种方式,但是由于涉及到不同进程间反复文件I/O,难免显得有些效率低下.共享文件的本质,实际是就是某个进程向共享为念写入数据,一个或多个进程从文件中读取数据,有可 ...

  9. 深刻理解 Linux 进程间七大通信(IPC)

    前言 网络编程是 Linux C/C++的面试重点,今天我就来聊一聊进程间通信的问题,文章末尾列出了参考资料,希望帮助到大家. 篇幅有点长,希望大家耐心阅读. Linux 下的进程通信手段基本上是从 ...

  10. Linux之本地进程间Socket通信

    文章目录 一.Sokcet 二.Sokcet API (一).sockaddr 结构: (二).struct socketaddr_in : (三).Struct socketaddr_un (四). ...

最新文章

  1. 使用Python中的OpenCV降噪功能增强图像的3个步骤
  2. 如何把gcc编译工具使用到linux全局
  3. Java并发包中的几种ExecutorService
  4. qt 分辨率问题 安卓_Windows下基于Qt开发Android应用
  5. 串口同步通信和串口异步通信
  6. 网络进阶:用了HTTPS就安全了吗?HTTPS 会被抓包吗?
  7. DeDeCMS后台批量修改替换sql语句大全
  8. Python---面向对象(一)
  9. c语言中++b与b++_C ++中的朋友功能
  10. [深度学习论文笔记][Depth Estimation] Depth Map Prediction from a Single Image using a Multi-Scale Deep Netw
  11. oracle混音插件教程,Waves插件个人经验谈
  12. 2022年最佳的9种逆向工程工具[持续更新]
  13. 印象笔记打开错误_了不起的“印象”
  14. 小米4 miui6 android,小米4 rom刷机包 4.10.11(MIUI6) 官方最新版
  15. 【DeepLearning】深入理解dropout正则化
  16. NT Server无盘站配置技术详解
  17. python中import简介
  18. 搜索光纤测试软件,了解光纤的常用工具及使用方法
  19. 任天堂switch手柄怎么拆解图文教程 教你如何拆joycon
  20. Redis是什么?Redis有哪些数据类型?Redis怎么集群?

热门文章

  1. 对象可以创建数组吗_“跟相亲对象这样聊天可以吗?在线等挺急的!”哈哈哈哈……太逗了...
  2. 2021年南阳五中高考成绩查询,南阳五中:召开2021年春期高三一模考试表彰会暨高考冲刺动员会...
  3. 解决Windows 与Mac 双系统下的蓝牙设备共用的问题
  4. 实战基于Docker部署FLASK后端api并使用云托管服务
  5. linux命令-mkdir-rmdir-cd
  6. 深入理解RHEL6开机启动原理
  7. SV学习笔记—变量及数组随机化约束常犯的错误
  8. 数据集成框架SeaTunnel学习笔记
  9. 百家号发帖软件怎么发帖?使用视频教程
  10. 重读《C primer plus》(八)