《unix高级环境编程》进程间通信——进程间通信概述

进程通信(IPC)是处理一个多进程系统中各个进程之间的协调。进程通信就是指多个进程之间相互通信、交换信息的方法。进程通信的目的如下:

  1. 数据传输:一个进程需要将它的数据发送给另一个进程;
  2. 共享数据:多个进程操作共享数据,若其中一个进程修改了共享数据,则其他进程立即可以看到修改后的数据;
  3. 通知事件:一个进程要向另一个或一组进程发送消息,通知它们发生了某种事,例如进程终止时要通知父进程;
  4. 资源共享:多个进程共享相同的资源,这需要内核提供锁或同步机制;
  5. 进程控制:某些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。

Linux 进程间通信(IPC)由以下几部分发展而来:早期 UNIX 进程间通信、基于 System V 进程间通信、基于 Socket 进程间通信和 POSIX 进程间通信。

  1. UNIX 进程间通信方式包括:管道、FIFO、信号;
  2. System V 进程间通信方式包括:System V 消息队列、System V 信号量、System V 共享内存;
  3. POSIX 进程间通信包括:Posix 消息队列、Posix 信号量、Posix 共享内存;

下图是 Linux 进程间通信机制的形成:


常见的进程间通信的方法有如下几种:其中套接字是用于远程通信,其他的是用于本地通信;

  1. 管道及命名管道:管道可用于具有亲缘关系进程间的通信,命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;
  2. 信号:信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;
  3. 信号量:主要作为进程间以及同一进程不同线程之间的同步手段;
  4. 共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥;
  5. 消息队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点;
  6. 套接字:更为一般的进程间通信机制,可用于不同机器之间的进程间通信;

参考资料:

《UNIX高级环境编程》

深刻理解Linux进程间通信

Linux 进程间通信

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值