Linux 的进程间通信方式(IPC)

进程间通信(IPC)是什么

  现在操作系统都是多进程,各个进程并发的执行,进程间基本都会涉及到数据的共享,这就需要进程之间通信去交换数据,但是进程本身之间是无法之间交流的,这就是本文讨论的问题。

Linux进程间的通信方式主要有下面几种

  1.管道。

    管道是在内存创建一个大小为Page的共享内存区域的文件。

    管道(pipe),Linux上的管道在具体实现中,根据通信所使用的的文件是否具有名称,分两种类型:

      1)匿名管道。

        匿名管道最常见的形态就是我们在shell操作中最常用的”|”。

      2)命名管道FIFO。

    管道不适合大量数据的传输。

  2.消息队列。

    消息队列会有两次的copy,会造成额外的消耗。不适合频繁及数据量很大。

  3.共享内存。

    共享内存就是不同的虚拟地址内存映射到相同的物理内存上。可以对相同的一块区域读写。它不需要复制,多个进程可以共享一块内存,但是各个进程之间没有同步的机制,所以需要额外去实现同步机制来保证数据的一致性。

  4.套接字(socket),服务端的进程和客户端的进程模式,走的是网络通信,所以效率比较低。

  5.信号量。

    信号量是一种锁机制,是为了防止多个进程之间访问共享资源一种同步的技术。

  6.信号。

     信号主要用于操作系统给进程发送信号,比如操作系统给某个进程发送中断信号。

原文地址:https://www.cnblogs.com/songgj/p/11212096.html