| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 【linux之进程间通信】——管道 -> 正文阅读 |
|
[系统运维]【linux之进程间通信】——管道 |
目录 进程间是怎么通信的
管道
匿名管道
匿名管道是如何实现进程间通信1.父进程利用pipe创建出一个匿名管道,得到的文件表示符指向管道的读端和写端 2.利用fork生成一个子进程,子进程的文件描述符也指向管道的读端和写端。 3.关闭父进程的读端和关闭子进程的写端 或者?关闭父进程的写端和关闭子进程的读端。 这样匿名管道就创建完成。
? ? ? ?内核角度理解匿名管道
? 代码: ? 管道的读写规则?情景1让子进程一直往管道中写入数据,父进程的读端不关闭,但不读取数据。? ? 结果?
那么我们既然知道管道是有大小的,我们来测试一下我这个版本的linux管道大小是多少。 此时的父进程还是在睡眠,不读取数据。 输出结果:? ?
情景2当子进程往管道中写入一定的数据后,就不再往管道中写入数据,并让父进程一直读取管道中的数据。 子进程? 父进程:?
? ?情景3当子进程往管道中写完数据后就关闭写端,父进程一直在读取. ?结果:
?情景4当子进程一直往管道中写数据,父进程休息5秒后关闭读端。???????? ? 结果:
总结:
命名管道匿名管道是通过子进程能够继承父进程的pcb,file和file_struct等结构体,使父子进程(兄弟进程等有血缘关系的进程)能够看到同一个管道,可是两个没有任何的关系进程是没办法这种方式看到同一个管道的。然而系统有命名管道可以让这两个不同的进程看到同一个管道,实现通信。
创建命名管道命令行方式创建
命名管道的文件属性是p。 函数创建
命名管道的应用场景?场景1利用命名管道实现一个进程对另一个进程的通信?
头文件: makefile文件: client.c文件: ?server.c文件 ?运行结果: ?场景2
?client.c文件 ?server.c文件 运行结果:? 场景3用命名管道实现文件拷贝
client.c文件? ? ? server.c?文件 ? 管道的特点:
? 好啦,今天的内容就分享到这里,喜欢的读者给个三连呗,感谢你的支持。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 23:50:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |