看图理解进程间通信IPC

什么是进程间通讯

进程间通信(inter-process communication或interprocess communication,简写IPC)是指两个或两个以上进程(或线程)之间进行数据或信号交互的技术方案。

通常,IPC一般包含客户端和服务器,客户端请求数据,服务器响应请求(比如分布式计算中就是这样)。

有哪些IPC方法

IPC方法适用的环境

文件(File)

存储在磁盘上的记录,或由文件服务器按需合成的记录,可以由多个进程访问。

信号(Signal)

系统消息从一个进程发送到另一个进程,一般不用于传输数据,而是用于远程传输命令。

套接字(Socket)

通过网络接口将数据量发送到本机的不同进程或远程计算机。

Unix域套接字(Unix domain socket)

用于在同一台机器上运行的进程之间的通信。虽然因特网域套接字可用于同一目的,但UNIX域套接字的效率更高。UNIX域套接字仅仅复制数据;它们并不执行协议处理,不需要添加或删除网络报头,无需计算检验和,不要产生顺序号,无需发送确认报文。

消息队列(Message queue)

类似于套接字的数据流,但消息有自己的结构,它允许多个进程只需要读写消息队列,而不需要直接相互连接。

管道(Pipe)

管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

命名管道(Named pipe或FIFO)

命名管道可在同一台计算机的不同进程之间或在跨越一个网络的不同计算机的不同进程之间,支持可靠的、单向或双向的数据通信。

共享内存(Shared memory)

允许多个进程访问同一个内存块,该内存块作为一个共享缓冲区,供进程间相互通信。

消息传递(Message passing)

一般在并发模型中,允许多个程序使用消息队列或者托管通道通信。

内存映射文件(Memory-mapped file)

类似于标准的文件,内存映射文件映射到RAM,可以直接对内存地址进行更改,而不是更改输出流。

推荐阅读更多精彩内容

  • 一、进程间通信的概念 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间...
    TyiMan阅读 90,030评论 15 231
  • 进程间通信 进程间通信即IPC(InerProcess Communication)Unix ipc 已经是而且继...
    千里山南阅读 247评论 0 2
  • TONY匠阅读 107评论 0 0
  • “馨馨,我真是超喜欢你的”某人用呆萌的眼神看着女孩,叭,女孩毫不留情。“我己经说过了,你不要跟着我。”气急败坏地跑...
    遇到了你阅读 64评论 0 0
  • 曾经天真地以为,就算全世界的男人都花心,但总有那么一小部分男人一定不会出轨;即使身边有再多的诱惑,他也会毫不犹豫地...
    温道柳阅读 289评论 0 0