进程间通信

进程间通信(Inter-Process Communication,IPC)就是在不同进程之间传播或交换信息,为了能使不同的进程互相访问资源并进行协调工作,才有了IPC。

使用IPC 的理由:
信息共享:Web服务器,通过网页浏览器使用进程间通信来共享web文件(网页等)和多媒体;
加速:维基百科使用通过进程间通信进行交流的多服务器来满足用户的请求;
模块化;私有权分离。
与直接共享内存地址空间的多线程编程相比,IPC的缺点:
采用了某种形式的内核开销,降低了性能;
几乎大部分IPC都不是程序设计的自然扩展,往往会大大地增加程序的复杂度。

linux的进程间通信方法有:
管道及命名管道:管道可用于具有亲缘关系进程间的通信,命名管道克服了管道没命名的限制,允许无亲缘 关系进程通信。
消息队列:消息队列是消息的链接表,包括POSIX(可移植操作系统接口)消息队列和SystemV队列。有足
够的权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读取队列中的消息。消息队列
克服了信号量称在无格式字节流及缓冲区大小受限等缺点。
共享内存: 使得多个进程可以访问同一个内存空间,是最快的IPC形式。是针对其他通信机制运行效率较低而 设计的。往往与其他通信机制(eg.信号量)结合使用,来达到进程间的同步及互斥。
信号量: 主要作为进程间及同一进程不同线程之间的同步手段。
套接口:Socket 一切皆是socket(通信) 一切都是文件(linux)

管道与命名管道
管道没有名字,只能用于父子进程或兄弟进程之间;管道对于管道两端的进程而言,就是一个文件但它不属于任何某个文件系统,并且只存在于内存中。
命名管道可以用于任两个进程间的通信;命名管道作为一种特殊的文件存放于系统中,而不是像管道一样存放在内存(使用后完毕后消失),进程对命名管道的使用结束后,命名管道依然存在于文件系统中,除非对其进行删除操作,否则不会消失。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值