Linux进程间通讯概述

Linux进程间通讯概述

Linux下的进程通讯机制基本是从UNIX平台继承而来的。主要包含以下几种类型的通讯机制:

  • 最初UNIX的进程间通讯:包括无名管道、有名管道以及信号
  • System V进程间通讯:包括System V消息队列、信号量以及共享内存
  • Socket进程间通讯:包括socket
  • POSIX进程间通讯:包括POSIX消息队列、信号量以及共享内存

现在再Linux中使用较多的进程间通讯方式主要有以下几种:

  1. 无名管道(pipe)及有名管道(fifo):无名管道可用于具有亲缘关系进程间的通讯(如父子进程通讯);有名管道除了具有和无名管道相似的功能外,还允许无亲缘关系进程使用
  2. 信号(signal):信号是在软件层次上对中断机制的一种模拟,是比较复杂的通讯方式,用于通知进程某事件发生。进程收到信号与处理器收到中断请求处理的过程类似
  3. 消息队列(message queue):是消息的链接表,包括System V消息队列和POSIX消息队列,它克服了前两种通讯方式中信息量有限的缺点,具有写权限的进程可以按照一定的规则向消息队列中添加新消息;具有读权限的进程则可以从消息队列中读取消息
  4. 共享内存(shared memory):是最有效的进程间通讯方式。使得多个进程可以访问统一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据的更新。这种通讯方式需要依靠某种同步机制,如互斥锁和信号量等
  5. 信号量(semaphore):主要作为进程之间以及同一进程的不同线程之间的同步和互斥手段
  6. 套接字(socket):是使用更广泛的进程间通讯机制,跳出了互相通讯的进程局限在单个计算机内的限制。可用于网络中不同主机之间的进程通讯

猜你喜欢

转载自blog.csdn.net/Chuangke_Andy/article/details/108305663