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看看代码

相关推荐
不会就选b30 分钟前
linux之进程管理(二)--替换
linux·运维·服务器
倔强的石头10635 分钟前
【Linux指南】动静态库系列(二):从源码复用到目标文件复用:为什么需要把 .o 打包成库
linux·运维·服务器
码农学院42 分钟前
GEO与SEO协同:从传统搜索到生成式搜索的平滑迁移路径
服务器·前端·python
步步精BBJconn44 分钟前
从GPU服务器到数据中心:AI服务器高压连接器的应用与发展趋势
大数据·运维·服务器·人工智能·科技·物联网
码农学院3 小时前
基于运维监控体系的网络品牌推广方案:从架构设计到技术实现
运维·网络
爱写代码的森9 小时前
鸿蒙三方库 | harmony-utils之ImageUtil图片保存到本地详解
服务器·华为·harmonyos·鸿蒙·huawei
大耳朵-小飞象12 小时前
电力安全运维的智能密码:BACS如何破解设备全生命周期管理难题,让电网安全“看得见、管得住”?
运维·安全·智慧城市·能耗系统·楼宇智控·未来生活
极客侃科技12 小时前
制造企业 MES/APS 选型:SAP PP/DS 集成、ERP-MES 边界划分与一体化架构要点
运维·架构·制造
HLC++13 小时前
Linux的进程间通信
android·linux·服务器