30.进程池IPC

进程池代码的问题:

常见子进程,关父进程关闭读3,用4写,再创建子进程,父进程用3读,用5写,第二个子进程还是用3读。但是第二个子进程可能继承4写,这样的话还有别的引用计数,不能彻底关掉,那么就阻塞,读端不会读到0.所以不能把stop和wait写到一个for循环

所以方法1:从下往上关,就行,方法2:就让一个指向一个文件描述符,让下一个把继承的哥哥进程的w端关了就行。调用closeall就能全部关掉看代码

,父进程每次创建完管道子进程都会把管道和子进程给cm容器,子进程创建时候会继承父进程数据,cm就是历史上打开的文件描述符的写端。第一次创建时候cm是空,close什么都没做,第二次创建时候,已经保存第一次创建的文件描述符所以关闭时候所以只有第一个进程文件描述符写端。父进程修改会发生写时拷贝 。

看代码。


命名管道:

为什么要有两个struct file;因为每个进程读写位置不一样,但是操作系统根据inode number发现同一个文件后 所以struct file指向同样inode 文件缓冲区,

磁盘会刷新到外面,所以有个管道文件,

创建命名管道,p开头文件类型

echo就是个进程,向管道写入,cat也是个进程,这就是进程间通信。这就是命名管道。

unlink fifo就删掉了

如何用代码实现命名管道。就是让一个进程创建一个命名管道,后面就是文件操作。

系统调用:

mode代表读还是写

lesson25看看代码

相关推荐
GeW4 小时前
超详细!RHCE10版通用备考策略,内含评分细则解读
linux
用户041328465135 小时前
Linux 服务开机自启动怎么配置?systemctl enable 原理详解
linux
BreezeJiang12 小时前
从域名到 Node.js:一次云服务器请求经过了哪些层?
服务器
草莓熊Lotso14 小时前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
张文君14 小时前
ubuntu26.04坏道坏块分区隔离急速版260831-V0.12
linux·python
IT大白鼠14 小时前
Docker 实战 ELKF 日志监控:容器日志全栈收集分析方案
运维·docker·容器
贝锐1 天前
从国产化信创设备到商用安卓终端,向日葵如何帮助企业实现统一运维管理?
linux·运维·远程控制
Julien20041 天前
调查和解决 SELinux 问题
linux·运维·服务器·网络·学习方法
天远Date Lab1 天前
零信任架构实战:基于天远双人婚姻评估查询构建自动化房产按揭联合审查网关
运维·人工智能·架构·自动化
2601_962074681 天前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器