进程间通信方式有哪些
廖家龙 用心听,不照做

进程通信就是指进程之间的信息交换,进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立,为了保证安全,一个进程不能直接访问另一个进程的地址空间,但是进程之间的信息交换又是必须实现的。为了保证进程间的安全通信,操作系统提供了一些方法

  • 共享内存:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。
  • 消息传递:进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换
  • 管道:管道这种通讯方式有两种限制,一是半双工的通信,数据只能单向流动,二是只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
    • 匿名管道:单向的,只能在有亲缘关系的进程间通信;
    • 命名管道:可以实现本机任意两个进程通信。
  • 信号 : 信号是一种比较复杂的通信方式,信号可以在任何时候发给某一进程,而无需知道该进程的状态。
  • 信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
  • Socket:与其他通信机制不同的是,它可用于不同机器间的进程通信。