欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

【Linux】基于管道进行进程间通信-一、初识进程间通信

最编程 2024-02-15 16:56:53
...

1. 进程间通信概念

进程间通信是两个或者多个进程实现数据层面的交换。但是由于进程间存在独立性,所以导致进程间通信的成本比较高。

那么为什么要有进程间通信呢?其中有以下几种目的:

  • 数据传输:一个进程需要将它的数据发送给另一个进程;
  • 资源共享:多个进程之间共享同样的资源;
  • 通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程);
  • 进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。

那么怎么做到进程间通信呢?由于进程之间具有独立性,所以在不打破它们的独立性的前提下,使它们看到同一份“资源”,这就是进程间通信的本质。那么这个“资源”是什么呢?是谁提供的呢?其实就是特定形式的空间,一般由操作系统提供。必定是不能由一个进程提供,假设是由一个进程提供,这个资源就是属于这个进程独有了,破坏了进程的独立性!

所以我们进程访问这个空间,进行通信,本质就是访问操作系统!进程代表就是用户,所以这个“资源”从创建、使用、释放,都是通过系统调用接口!从底层设计,从接口设计,都要由操作系统独立设计,一般操作系统会有一个独立的通信模块,它隶属于文件系统,叫做 IPC通信模块

2. 进程间通信分类

  1. 基于文件级别的通信方式 - - - 管道
  • 匿名管道 pipe
  • 命名管道
  1. System V IPC
  • System V 消息队列
  • System V 共享内存
  • System V 信号量
  1. POSIX IPC
  • 消息队列
  • 共享内存
  • 信号量
  • 互斥量
  • 条件变量
  • 读写锁

推荐阅读