前面几篇关于Linux进程间通信(单机通信)差不多就告一段落,以后有什么需要补充的再补充。既然写了几篇进程间通信,那么今天我们就来总结总结,比较一下这几种通信方式,看看在什么样的情况下适用于什么样的通信方式。这篇就不具体写函数实现和具体的参数了,大家可以在前面几篇看。
第一种通讯方式:管道
在内存中创建一个管道,它不属于任何区域或进程。
有名管道:应用于任意两个进程之间数据的单向传递。
无名管道:相对于有名管道而言的,无名管道在使用时产生,不使用后释放,并不会在系统上留下痕迹。无名管道因其使用前没有任何标识,所以它只能应用于父子进程之间。
注:因为管道是半双工通讯,而无名管道创建后,父进程在fork产生子进程后,两个进程分别有一对读写,所以要在父子进程中分别关闭读或写。
第二种通讯方式:信号量
信号量作用:进程间同步控制(用于多进程访问临界资源)
信号量相当于记录资源能同时被多少个进程访问。函数semctl中第四个参数(union semun arg 它是可选的参数)是一个联合体,里面的对象val的值,0表示a和b是服务关系(比如a进程执行完b进程再开始执行),1表示a和b是竞

本文总结了Linux下四种进程间通信方式:管道(包括有名和无名管道)、信号量、消息队列和共享内存。管道适用于单向传递数据,信号量用于同步控制,消息队列支持带类型的优先级数据传递,共享内存则提供了最快的通信速度,但需要同步控制。
最低0.47元/天 解锁文章
557

被折叠的 条评论
为什么被折叠?



