进程间通讯(一) 有名管道
来源:互联网 发布:手机怎么查mac地址 编辑:程序博客网 时间:2024/05/22 02:52
一、管道文件
1、A进程---->B进程 A进程的数据流通过通道向B进程
2、半双工通讯:数据流向单向传输 (同一时间)
全双工通讯:数据流向双向传输 (同一时间)
注意:管道内数据流向没有定,所以理论上A也可以读,但是,A写入又读出没有意义,所以有名管道是任意两个进程之间的通讯。
3、管道文件既不是文件又不是进程空间,那又如何创建和操作呢?
二、管道操作
1、有名管道:应用于任意两个有名称进程之间数据的单向传递。
在文件目录树中有一个文件标识(管道问件),实际不占据磁盘空间,数据缓存在内存上。
2、创建:命令方式:mkfifo
函数方式:mkfifo( ) (命令在控制终端用,函数在程序中调用)
3、打开:写数据:write 读数据:read 关闭:close
4、maina.c:将A进程的内容写入管道文件
mainb.c:将管道文件的内容读入B进程
运行情况:
(1)./maina 无结果 因为只有写,没有读
阻塞运行:open没返回,导致整个进程阻塞
打开另一个终端 ./mainb 输出结果。因为在之前写已经成功了,读运行后就会完成进程间的通讯。
5、阻塞运行函数:函数运行以后不会立即返回,需要某些条件的发生才会返回。open操作管道文件时,阻塞运行的函数。
(1)如果一个进程以“只写”方式打开一个管道文件,open会阻塞运行,直到有一个进程以“读”的方式打开管道文件,open才会返回,进程接着执行。
(2)如果一个进程以“只读”方式打开一个管道文件,open会阻塞运行,直到有一个进程以“写”的方式打开管道文件,open才会返回,进程接着执行。
(3)read函数也会阻塞运行,直到写端写入数据或所有的写端都关闭。
(4)wrirte不阻塞 (阻塞条件:管道写满了 因为在内存开辟,所以有大小限制)
- 进程间通讯(一) 有名管道
- 进程间通讯-有名管道
- 进程间的通讯方式_管道(有名管道)
- 进程间通讯——管道(有名管道)
- Linux进程间通讯--管道(有名管道
- 进程间的通讯之有名管道
- 进程间通讯——有名管道
- C++ 进程间的通讯(一):简单的有名管道实现
- Linux 进程间通讯之有名管道方式
- 利用有名管道,实现两个独立进程间的通讯
- Linux 进程间通讯之有名管道方式
- (四)linux进程通讯方式,无名、标准、有名管道
- 进程间通讯(一)管道
- 一.Linux环境进程间通信(一):管道及有名管道
- Linux 进程间通讯(IPC)详细总结 2有名管道。
- Day31、未决信号、有名管道、IPC进程间通讯(消息队列)
- 进程间通信-管道(有名管道和无名管道)
- 进程间通信(二)有名管道
- 职业规划
- C# 调用C++ DLL 的类型转换
- html页面集成markdown编辑器
- Android studio下Cmake配置编译开发jni总结
- APICloud的学习成长之路(一)
- 进程间通讯(一) 有名管道
- android音频(三)——利用ndk直接编译faac和faad(续1)
- appium 设备操作总结
- Cmake Practice(六)
- 解决IE中duration返回NaN问题
- ue4 调用windows库函数报错 error C2872: error C2872: “DWORD”: 不明确的符号
- RxJava的简单使用(一)
- 《大话设计模式》——学习笔记之面向对象原则&UML类图
- JS高级. 02 面向对象、创建对象、构造函数、自定义构造函数、原型