进程间的通讯(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的变种都支持套接字。

Android进程间通信(IPC)常用方式

进程间通信方式在Android开发中我们可以通过Intent、ContentProviders来实现进程间通信,如果不限于Android特有的话,我们还可以使用File、Socket等方式,反正只要进...
  • fiendvip
  • fiendvip
  • 2016年03月30日 17:31
  • 3042

linux基础——linux进程间通信(IPC)机制总结

在linux下的多个进程间的通信机制叫做IPC(Inter-Process Communication),它是多个进程之间相互沟通的一种方法。在linux下有多种进程间通信的方法:半双工管道、命名管道...
  • a987073381
  • a987073381
  • 2016年07月23日 21:33
  • 5752

android跨进程通信(IPC):使用AIDL

AIDL的作用     AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(in...
  • singwhatiwanna
  • singwhatiwanna
  • 2013年11月30日 23:20
  • 53935

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

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

进程间的通讯(IPC)方式

为什么要进行进程间的通讯(IPC (Inter-process communication)) 数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间 共享数据...
  • lsp1991
  • lsp1991
  • 2014年09月30日 10:21
  • 390

Android AIDL实现进程间通讯IPC

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

IPC进程间通讯

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

【IPC进程间通讯之三】内存映射文件Mapping File

IPC进程间通信+共享内存Mapping                IPC(Inter-Process Communication,进程间通信)。         文件映射(Mapping)是...
  • Jiangweihll
  • Jiangweihll
  • 2014年05月16日 22:03
  • 3715

Linux 进程间通讯(IPC)详细总结 2有名管道。

有名管道概述及相关API应用 2.1 有名管道相关的关键概念           管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(named p...
  • x32sky
  • x32sky
  • 2011年12月18日 09:43
  • 494

Linux 进程间通讯(IPC)详细总结 3信号量(Semaphore)。

3,信号量(Semaphore) 信号不能传递信息,只能用来控制时序 信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用...
  • x32sky
  • x32sky
  • 2011年12月18日 09:45
  • 693
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:进程间的通讯(IPC)方式
举报原因:
原因补充:

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