linux篇【9】:进程间通信
创始人
2024-04-03 18:23:55
0

目录

一.通信背景

3.进程间通信目的

4.进程间通信发展

5.进程间通信分类

二.管道

1.匿名管道

(1)匿名管道原理 

 (2)匿名管道特点

(3)打开进程读写的系统接口:pipe

(4)管道的代码


一.通信背景

1.进程是具有独立性的!——导致进程间想交互数据,成本会非常高
进程为什么要通信:需要多进程进行协同处理一件事情
2.不要以为,进程独立了,就是彻底独立,有时候,我们需要双方能够进行一定程度的信息交互

3.进程间通信目的

数据传输:一个进程需要将它的数据发送给另一个进程 资源共享:多个进程之间共享同样的资源。 通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。 进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变

4.进程间通信发展

管道 System V进程间通信 POSIX进程间通信

5.进程间通信分类

管道         匿名管道pipe         命名管道 System V IPC         System V 消息队列         System V 共享内存         System V 信号量 POSIX IPC         消息队列         共享内存         信号量         互斥量         条件变量         读写锁

二.管道

因为进程有独立性。
所以通信之前,我们需要让不同的进程看到同一份资源(文件,内存块..)
我们要学的进程间通信,不是告诉我们如何通信。而是解决:他们两个如何先看到同一份资源!
资源的不同决定了不同种类的通信方式!

第一种通信方式—>管道(提供共享资源的一种手段)

1.匿名管道

(1)匿名管道原理 

父进程写入文件的缓冲区,子进程去缓冲区里读,就实现了两个进程看到同一份资源,这个用于通信的内存级文件就叫做管道(普通级文件是为了保存数据到磁盘的)。struct file中有inode,inode中有一个联合体可以来表示自己是管道/块设备/文件/字符

 

 (2)匿名管道特点

都是单向的!
管道传输资源的——这个资源就是 数据
进程间通信管道——>单向的,传输数据的!

进程间通信管道是单向的过程图:

①为什么父进程要分别打开读和写? ——答:为了让子进程继承,让子进程不用再打开了!(如果父进程只是打开写,子进程也会继承写,那就没人读了,让子进程读的话还得再打开读)
②为什么父子要关闭对应的读写?——答:管道必须是单向通信的。父进程关闭读,子进程关闭写,就构成单向的父写子读了。
③谁决定,父子关闭什么读写? ——答:不是由管道本身决定的, 是由你的需求决定的!

(3)打开进程读写的系统接口:pipe

man 2 pipe  :pipe底层封装open,open了两次,第一次O_RDONLY,第二次O_WRONLY,把读写描述符分别放在数组pipefd[0],pipefd[1]。 返回值 0:成功,-1:失败

(4)管道的代码

①当父进程没有写入数据的时候,子进程在等。所以,父进程写入之后,子进程才能read(会返回)到数据,子进程打印读取数据要以父进程的节奏为主!
②父进程和子进程读写管道的时候(是有一定的顺序性的!)。那么父子进程各自printf的时候,会有顺序吗?——答:无序。printf就是向显示器写入,也是文件,但是缺乏访问控制。
③父进程和子进程读写管道的时候:
——管道内部,没有数据,reader就必须阻塞等待(read),等管道有数据(阻塞等待就是当前进程的task_ struct 放入等待队列中,R->S/D/T)
——管道内部,如果数据被写满,writer就必须阻塞等待(write)等待管道中有空间
因为pipe内部自带访问控制机制——同步和互斥机制

 

相关内容

热门资讯

贵州百灵纾困纠纷背后:新希望与... 近日,苗药龙头贵州百灵(002424)与华创证券之间的纾困纠纷一直是市场关注的重点,自2025年8月...
*ST南置(002305)披露... 截至2025年12月29日收盘,*ST南置(002305)报收于2.23元,较前一交易日上涨0.9%...
原创 普... 俄罗斯总统弗拉基米尔·普京签署法律,禁止在俄罗斯境内执行外国刑事法院和国际法院的裁决 相关文件已在俄...
盒马购得面包发馊变臭!商家“仅... 面包发馊发臭 近日,市民刘女士向“新民帮侬忙”反映,从盒马鲜生购入的日式面包,竟然发馊发臭!然而事发...
当年龄不再是“免罚金牌”,彰显... 文/九派新闻特约评论员 舒圣祥 明年1月1日起,新修订的《治安管理处罚法》即将正式施行。新法专门新增...
2026年1月1日起施行!“被... 2025年新修订的治安管理处罚法将于2026年1月1日起施行,针对新修订的内容中与市民生活息息相关的...
“车企起诉电池企业第一案”:2... 编者按: 极氪起诉欣旺达这场官司,无论最终迎来怎样的判决,都注定会为整个行业留下一笔深刻的警示财富。...
逃缴1.09亿美元关税!深圳货... 可以说2025是税务大年,卖家不仅要扛住国内申报的节奏,还得适应一件更现实的事:跨境这门生意,账目和...
青岛榜样|奋战公益诉讼一线,诠... “说是检察官,其实我们更像户外工作者,经常跋山涉水、穿梭于田野乡间,哪里有公益受损和群众需求,哪里就...
双星新材(002585)披露市... 截至2025年12月29日收盘,双星新材(002585)报收于6.82元,较前一交易日上涨1.04%...