当前位置:   article > 正文

[Linux]---进程间的四种通信方式_进程通信及四种通信形式

进程通信及四种通信形式

进程间通信

首先我们需要了解什么是进程间通信?-它是操作系统为用户提供的几种进程间通信方式。咦!OS为什么要提供给用户进程间通信的方式?-因为进程之间具有独立性,每个进程只能访问自己的虚拟地址,无法直接沟通,因此需要操作系统提供公共的媒介。通信的场景分为三大类:数据传输,数据共享以及进程控制。那么接下来笔者带你们探索进程间通信的四种方式!

⭐管道

管道:用于进程间的数据传输
本质:内核中的一块缓冲区;多个进程通过访问同一块缓冲区实现通信
种类:匿名管道 / 命名管道

匿名管道

特点:这块缓冲区没有标识符,因此匿名管道只能用于具有亲缘关系的进程间通信。

创建匿名管道的函数:

  1. int pipe(int pipefd[2]);
  2. 参数解释:pipefd[0]:用于从管道中读取数据;pipefd[1]:用于向管道中写入数据
  3. 返回值:0成功;-1失败,并且会设置errno
  4. 头文件:#include<unistd.h>
    在这里插入图片描述

匿名管道特性:(读写特性,命名管道也具有)

  1. 管道中没有数据,则read读取数据会阻塞,直到有数据。
  2. 管道中数据写满,则write继续写入数据会阻塞,直到有数据被读出去
  3. 若管道的所有写端被关闭,则read读完管道中的数据后,不会阻塞,而是返回0
  4. 若管道所有读端被关闭,则write写入数据时,会触发异常,导致父进程退出
  5. 对管道进行读写的时候,若读写数据大小不超过PIPE_BUF=4096大小,则可以保证操作的原子性

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】

推荐阅读
相关标签