进程间的通讯(IPC)方式

原创 2013年12月05日 15:30:19

为什么要进行进程间的通讯(IPC (Inter-process communication))

数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间
共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。
通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。
资源共享:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。
进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。

linux常用的进程间的通讯方式

(1)、管道(pipe):管道可用于具有亲缘关系的进程间的通信,是一种半双工的方式,数据只能单向流动,允许一个进程和另一个与它有共同祖先的进程之间进行通信。

(2)、命名管道(named pipe):命名管道克服了管道没有名字的限制,同时除了具有管道的功能外(也是半双工),它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。

(3)、信号(signal):信号是比较复杂的通信方式,用于通知接收进程有某种事件发生了,除了进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。

(4)、消息队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺

(5)、共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。

(6)、内存映射:内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它。

(7)、信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。

(8)、套接字(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。

相关文章推荐

Linux 进程间通讯(IPC)方式 ------- 共享内存

Linux 进程间通讯(IPC)方式有以下几种: 1-》管道(pipe)和有名管道(fifo). 2-》消息队列 3-》共享内存 4-》信号量 5-》信号(signal) 6-》套接字(s...

Android AIDL实现进程间通讯IPC

  • 2016年01月22日 14:00
  • 1.85MB
  • 下载

IPC进程间通讯

  • 2013年06月07日 15:22
  • 797KB
  • 下载

System V 进程间通讯(IPC、ftok)

消息队列、信号灯、共享内存常用在Linux服务端编程的进程间通信环境中。而此三类编程函数在实际项目中都是用System V IPC函数实现的。System V IPC函数名称和说明如下表15-1所示。...

c#进程间通讯方案之IPC通道

c#进程间通讯方案之IPC通道2010年12月05日| 分类:开发笔记| 标签:c#编程最近一直纠结与使用多进程还是多线程来构建程序。多线程的方法似乎不错,但是一个进程可承受的线程数有有限的,并且由于...
  • rise51
  • rise51
  • 2011年01月10日 17:10
  • 353

linux进程间通讯-System V IPC 信号量

UNIX 内核管理的进程自主地操作,从而产生更稳定的系统。然而,每个开发人员最终都会遇到这样的情况,即其中一组进程需要与另一组进程通信,也许是为了交换数据或发送命令。这种通信称为进程间通信(Inter...

Android进程间通讯之初见(IPC,RPC,LPC,BINDER,AIDL..)

Inter-process communication (IPC) is a set of methods for the exchange of data among multiple threa...

温故知新之进程间通讯技术(IPC)

端午节假期 第一天,闲下来整理下一直想总结的东西。

Android IPC进程间通讯机制

一.Linux系统进程间通信有哪些方式? 1.socket; 2.name pipe命名管道; 3.message queue消息队列; 4.singal信号量; 5.share memory共享内存...

Linux 进程间通讯(IPC)详细总结 6本地套接字。

6本地套接字    1)套接字可用于一个进程和其他进程互通信息.即可以实现本地计算机通信,也可以用于网络通信. 2)套接字不同与管道,即它们是双向通信. 3)创建通用套接字的系统调用是socke...
  • x32sky
  • x32sky
  • 2011年12月18日 10:00
  • 1244
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:进程间的通讯(IPC)方式
举报原因:
原因补充:

(最多只允许输入30个字)