进程通信——命名管道
目录
1、Creat
2、Open
3、Read/Write
4、Wait
5、Close
6、Delete
- 管道是 SylixOS 进程间通信的一种方式。
- 管道分为匿名管道 pipe 和命名管道 fifo。
- 管道有两个端口:读端和写端,并且只允许数据从写端流向读端,所以管道是一种流式设备。
- 个人理解:可以将管道理解为是一种使用特殊结构读写的文件。
匿名管道实际操作可以使用标准文件读写函数(read、write),但并不存在于文件系统中,其使用是依赖于父子进程文件描述符的继承关系,因此只能用于父子进程通信。
对于没有血缘关系的进程(不存在文件描述符的继承),可以使用命名管道进行通信。
创建一个命名管道可以使用 mkfifo 函数。通过mkfifo 函数可以指定命名管道的设备文件路径(存在于文件系统中), 其他进程可以使用标准的文件打开函数——open 函数打开该命名管道,然后使用 read 和write 函数对命名管道进行读和写操作。
1、Creat
创建命名管道类似于创建文件,因此命名管道的路径名存在于文件系统中,函数原型及介绍如下。
#include <unistd.h>
int mkfifo(const char *pcFifoName, mode_t mode);
函数 mkfifo 原型分析:
- 此函数成功返回错误号 0,失败返回-1 并设置错误号;
- 参数 pcFifoName 指定了命名管道的设备文件路径;
- 参数 mode 指定了命名管道的设备文件模式,与 open 函数的模式位相同。
2、Open
3、Read/Write
命名管道的读和写操作分别使用标准的文件读写函数——read 和 write 函数。
read、write函数的实现可参考“SylixOS文件I/O函数”中的对应描述:https://blog.csdn.net/Liangren_/article/details/107818912
4、Wait
5、Close
关闭一个命名管道可以使用标准的文件关闭函数——close 函数。
close函数的实现可参考“SylixOS文件I/O函数”中的对应描述:https://blog.csdn.net/Liangren_/article/details/107818912
6、Delete
进程通信——命名管道相关推荐
- Linux进程通信——匿名管道、命名管道、管道的特性和共享内存
Linux进程通信--匿名管道.命名管道.管道的特性和共享内存 一.管道 1.1 什么是管道? 1.2 匿名管道 <1> 匿名管道参数说明 <2> fork共享管道原理 < ...
- 进程的通信 - 命名管道
命名管道概述 命名管道(Named Pipes),顾名思义,一个有名字的管道.命名管道的名字主要是用于确保多个进程访问同一个对象.命名管道不仅可以在同一台计算机之间传输数据,甚至能在跨越一个网络的不同 ...
- Linux进程通信之管道
进程间完成数据传递需要借助操作系统提供的特殊的方法,比如:文件.管道.信号.共享内存.消息队列.套接字.命名管道等.但现在常用的进程间通信方式有: 管道 – 使用最简单 pipe 管道一般读写行为 F ...
- 6.进程通信 无名管道 有名管道
进程间通信(IPC,InterProcess Communication) 概念:就是进程和进程之间交换信息. 常用通信方式 无名管道(pipe) 有名管道 (fifo) 信号(signal) 共享内 ...
- 【Linux系统编程】进程通信之管道
1.进程间通信介绍 1.1 进程通信的基本概念 在之前我们已经学习过进程地址空间.Linux 环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间.任何一个进程的全局变量在另一个进程中都看不 ...
- linux 命名管道 c语言 不同进程,进程间通信 - 命名管道实现
命名管道概述 命名管道是通过网络来完成进程之间的通信的,命名管道依赖于底层网络接口, 其中包括有 DNS 服务,TCP/IP 协议等等机制,但是其屏蔽了底层的网络协议细节, 对于匿名管道而言,其只能实 ...
- php管道邮件,php进程通信-PIPE管道通信
上一篇文章讲到了php进程通信的进程信号通信方法,本文介绍的是有名管道: 管道通信,主要是利用文件,写入以及读取来进行通信的, 通俗来讲,就是A进程在1.txt写入1,B进程读取1.txt,就能读取到 ...
- linux通信管道破裂,Linux下进程通信之管道
每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把 ...
- C# 管道通信-命名管道(一)
最近在做一个应用程序,涉及到两个应用程序之间的通讯,就想到了用C#的命名管道的方式来实现,经过一番小折腾,总算实现了,现把一些主体的代码粘贴出来与大家分享: 管道通讯会涉及到client端和Serve ...
最新文章
- maven 父maven_Maven的春天
- php 正则替换 ubb,php实现过滤UBB代码的类
- 涉及反射/内省/泛型的优化实践
- html5在zigbee中起什么作用,ZigBee是什么?ZigBee在智能家居中扮演什么角色
- Pure公司发布机架规模FlashBlade对象与文件存储方案
- gulp排除已压缩文件思路
- discuz中写一个表单,数据存入到数据库中,再从数据库读出来显示在列表中
- 如何让NN分类输出[0,1]的值,并且相加等于1
- SCI从入门到精通(二)——如何阅读文献
- 计算机老师教育叙事,信息技术教育叙事范文10篇 初中
- 华为认证培训的话是远程还会面授好?
- 手机html送礼,送给家中“老顽童”的好礼物!这些手机的远程功能你会用嘛?...
- ps计算机设置,不仅要懂PS 浅谈修图电脑配置(基础篇)
- 高考过后,请问诸生接下来为什么而读书?
- 第六届信息类研究生学术论坛参赛有感
- 【win10专业版】win10系统下Office2013无法激活的解决方法
- 深度学习之参数计算(CNN为例)
- 01_03 获取答案
- JAVA的简单数据类型和复合数据类型
- TensorFlow系列专题(一):机器学习基础